Ë uä@ökÂMãó�—dZddlmZddlmZddddœZdZGd „d «Zej«e d k(rdd l m Z e d d¬«yy)zàParenMatch -- 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. é)Ú HyperParser)ÚidleConfÚ(Ú[Ú{©Ú)Ú]Ú}édcó†—eZdZdZdZdZd„Zed„«Zd„Z d„Z d„Z d „Z d „Z dd „Zd „Zd„Zd„Zd„ZeeeedœZd„Zd„Zy )Ú ParenMatcha'Highlight matching openers and closers, (), [], and {}. There are three supported styles of paren matching. When a right paren (opener) is typed: opener -- highlight the matching left paren (closer); parens -- highlight the left and right parens (opener and closer); expression -- highlight the entire expression from opener to closer. (For back compatibility, 'default' is a synonym for 'opener'). Flash-delay is the maximum milliseconds the highlighting remains. Any cursor movement (key press or click) before that removes the highlight. If flash-delay is 0, there is no maximum. TODO: - Augment bell() with mismatch warning in status window. - Highlight when cursor is moved to the right of a closer. This might be too expensive to check. z<>)z z z zcó°—||_|j|_|jj|j|j«d|_d|_y)Nr)ÚeditwinÚtextÚbindÚRESTORE_VIRTUAL_EVENT_NAMEÚ restore_eventÚcounterÚis_restore_active)Úselfrs ú)/usr/lib/python3.12/idlelib/parenmatch.pyÚ__init__zParenMatch.__init__(sH€ØˆŒ Ø—L‘LˆŒ ð � ‰ ×ј$×9Ñ9Ø×,Ñ,ô .àˆŒ Ø!"ˆÕócó—tjdddd¬«|_tjddddd¬ «|_tjddd d d ¬ «|_tj tj «d «|_y)NÚ extensionsrÚstyleÚopener)Údefaultz flash-delayÚintiô)ÚtyperÚbellÚbooléÚhilite)rÚ GetOptionÚSTYLEÚ FLASH_DELAYÚBELLÚ GetHighlightÚ CurrentThemeÚ HILITE_CONFIG)Úclss rÚreloadzParenMatch.reload3s{€ä×&Ñ&Ø ˜ g°xôAˆŒ ä"×,Ñ,ؘ\¨-¸eÈCôQˆŒä×%Ñ%ؘ\¨&°vÀqôJˆŒä$×1Ñ1´(×2GÑ2GÓ2IØ2:ó<ˆÕrcóš—|js?|jD](}|jj|j|«Œ*d|_yy)z5Activate mechanism to restore text from highlighting.TN)rÚRESTORE_SEQUENCESrÚ event_addr©rÚseqs rÚactivate_restorezParenMatch.activate_restore>sB€à×%Ò%Ø×-Ô-�Ø— ‘ ×#Ñ# D×$CÑ$CÀSÕIð.à%)ˆDÕ "ð&rcóš—|jr?|jD](}|jj|j|«Œ*d|_yy)zRemove restore event bindings.FN)rr0rÚ event_deleterr2s rÚdeactivate_restorezParenMatch.deactivate_restoreEsB€à × !Ò !Ø×-Ô-�Ø— ‘ ×&Ñ& t×'FÑ'FÈÕLð.à%*ˆDÕ "ð "rcón—t|jd«j«}|j|«y)zAHandle editor 'show surrounding parens' event (menu or shortcut).ÚinsertÚbreak)rrÚget_surrounding_bracketsÚfinish_paren_event)rÚeventÚindicess rÚflash_paren_eventzParenMatch.flash_paren_eventLs/€ä˜tŸ|™|¨XÓ6ß,Ñ,Ó.ð à ×Ñ Ô(Ørcóî—|jjd«}|tvryt|jd«}|j «sy|j t|d«}|j|«y)zHandle user input of closer.z insert-1cNT)rÚgetÚ_openersrrÚ is_in_coder;r<)rr=ÚcloserÚhpr>s rÚparen_closed_eventzParenMatch.paren_closed_eventSse€ð—‘—‘˜{Ó+ˆØ œÑ !Ø Ü ˜Ÿ™ {Ó 3ˆØ�}‰}ŒØ Ø×-Ñ-¬h°vÑ.>ÀÓEˆØ ×Ñ Ô(Ørcó@—|€'|jr|jj«y|j«|jj |j |j«||«|jr|j«y|j«y©N) r)rr"r4ÚtagfuncsrAr'Úcreate_tag_expressionr(Úset_timeout_lastÚset_timeout_none©rr>s rr<zParenMatch.finish_paren_event`sy€Ø ˆ?˜tŸyšyØ �I‰I�N‰NÔ Ø Ø ×ÑÔàAˆ� ‰ ×ј$Ÿ*™* d×&@Ñ&@ÓAÀ$ÈÔPð 2 $×"2Ò"2ˆ× Ñ õ 5Ø ×1Ñ1õ 5rNcó„—|jjd«|j«|xjdz c_y)zRemove effect of doing match.Úparenr$N)rÚ tag_deleter7r)rr=s rrzParenMatch.restore_eventks.€à � ‰ ×јWÔ%Ø ×ÑÔ!Ø � Š ˜ÑŽ rcóD—||jk(r|j«yyrH)rr)rÚ timer_counts rÚhandle_restore_timerzParenMatch.handle_restore_timerqs€Ø ˜$Ÿ,™,Ò &Ø × Ñ Õ ð 'rcóŽ—|jjd|d«|jjd|j«y)z'Highlight the single paren that matchesrOrN)rÚtag_addÚ tag_configr,rMs rÚcreate_tag_openerzParenMatch.create_tag_openerxs4€à � ‰ ×ј' 7¨1¡:Ô.Ø � ‰ ×јW d×&8Ñ&8Õ9rcó—|jj|d«dvr |ddz}n|d}|jjd|d|ddz|dz|«|jjd|j«y)z#Highlight the left and right parensr$rú+1crOrz-1cN©rrArUrVr,©rr>Ú rightindexs rÚcreate_tag_parenszParenMatch.create_tag_parens}sy€à �9‰9�=‰=˜ ™Ó $¨Ñ 7Ø  ™ EÑ)‰Jà  ™ˆJØ � ‰ ×ј' 7¨1¡:¨w°q©z¸%Ñ/?ÀÈEÑAQÐS]Ô^Ø � ‰ ×јW d×&8Ñ&8Õ9rcóì—|jj|d«dvr |ddz}n|d}|jjd|d|«|jjd|j«y)zHighlight the entire expressionr$rrYrOrNrZr[s rrJz ParenMatch.create_tag_expression†sf€à �9‰9�=‰=˜ ™Ó $¨Ñ 7Ø  ™ EÑ)‰Jà  ™ˆJØ � ‰ ×ј' 7¨1¡:¨zÔ:Ø � ‰ ×јW d×&8Ñ&8Õ9r)rrÚparensÚ expressioncóØ—|xjdz c_||j|jjd«fd„}|jjj t ||«y)zSHighlight will remain until user input turns it off or the insert has movedr$r9cóº—||jjd«k7r|j|«y|jjj t ||«y)Nr9)rÚindexrSrÚ text_frameÚafterÚ CHECK_DELAY)ÚcallmerÚcrcs rrgz+ParenMatch.set_timeout_none..callme sA€à˜Ÿ ™ Ÿ™¨Ó1Ò1Ø×)Ñ)¨!Õ,à— ‘ ×'Ñ'×-Ñ-¬k¸6À6ÕJrN)rrrcrrdrerf)rrgs rrLzParenMatch.set_timeout_none™sO€ð � Š ˜Ñ� Ø $¨¯ © ØŸ™Ÿ™¨Ó2ó Kð � ‰ ×Ñ×%Ñ%¤k°6¸6ÕBrcóª—|xjdz c_|jjj|j||jfd„«y)zFThe last highlight created will be removed after FLASH_DELAY millisecsr$có$—|j|«SrH)rS)rrhs rÚz-ParenMatch.set_timeout_last..¯s€¨d×.GÑ.GÈÔ.JrN)rrrdrer()rs rrKzParenMatch.set_timeout_last¨s@€ð � Š ˜Ñ� Ø � ‰ ×Ñ×%Ñ%Ø × Ñ Ø § ¡ Ò Jõ LrrH)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr0rÚ classmethodr.r4r7r?rFr<rrSrWr]rJrIrLrK©rrrr s„„ñð("@Ðð<Ðò #ðñ<óð<ò*ò+òò ò 5óò !ò:ò :ò:ð$Ø$Ø#Ø+ñ  €Hò CóLrrÚ__main__)Úmainz!idlelib.idle_test.test_parenmatché)Ú verbosityN) roÚidlelib.hyperparserrÚidlelib.configrrBrfrr.rlÚunittestrsrqrrÚrys]ðñõ ,Ý#à˜ Ñ $€Ø€ ÷bLñbLðJ ×ÑÔð ˆzÒÝÙÐ ,¸Ö:ðr