
    ;e$                         	 d dl mZ d dlmZ ddddZdZ G d d	          Ze                                 ed
k    rd dl	m
Z
  e
dd           dS dS )    )HyperParser)idleConf([{)]}d   c                       e Zd Z	 dZdZd Zed             Zd Zd Z	d Z
d Zd	 ZddZd Zd Zd Zd ZeeeedZd Zd Zd
S )
ParenMatchz<<parenmatch-check-restore>>)z
<KeyPress>z<ButtonPress>z<Key-Return>z<Key-BackSpace>c                     || _         |j        | _        |j                            | j        | j                   d| _        d| _        d S )Nr   )editwintextbindRESTORE_VIRTUAL_EVENT_NAMErestore_eventcounteris_restore_active)selfr   s     )/usr/lib/python3.11/idlelib/parenmatch.py__init__zParenMatch.__init__(   sN    L	 	$9,	. 	. 	.!"    c                    t          j        dddd          | _        t          j        ddddd	          | _        t          j        ddd
dd	          | _        t          j        t          j                    d          | _        d S )N
extensionsr   styleopener)defaultzflash-delayinti  )typer   bellbool   hilite)r   	GetOptionSTYLEFLASH_DELAYBELLGetHighlightCurrentThemeHILITE_CONFIG)clss    r   reloadzParenMatch.reload3   s    &gxA A A	",\-eCQ Q Q%\&vqJ J J$1(2G2I2I2:< <r   c                 |    	 | j         s3| j        D ]"}| j                            | j        |           #d| _         d S d S )NT)r   RESTORE_SEQUENCESr   	event_addr   r   seqs     r   activate_restorezParenMatch.activate_restore>   sZ    ?% 	*- J J	##D$CSIIII%)D"""	* 	*r   c                 |    	 | j         r3| j        D ]"}| j                            | j        |           #d| _         d S d S )NF)r   r0   r   event_deleter   r2   s     r   deactivate_restorezParenMatch.deactivate_restoreE   sZ    (! 	+- M M	&&t'FLLLL%*D"""	+ 	+r   c                     	 t          | j        d                                          }|                     |           dS )Ninsertbreak)r   r   get_surrounding_bracketsfinish_paren_event)r   eventindicess      r   flash_paren_eventzParenMatch.flash_paren_eventL   s>    Kt|X66,,.. 	(((wr   c                    	 | j                             d          }|t          vrd S t          | j        d          }|                                sd S |                    t          |         d          }|                     |           d S )Nz	insert-1cT)r   get_openersr   r   
is_in_coder;   r<   )r   r=   closerhpr>   s        r   paren_closed_eventzParenMatch.paren_closed_eventS   s    &{++!!F{33}} 	F--hv.>EE(((r   c                    |"| j         r| j                                         d S |                                   | j                            | j        | j                  | |            | j        r| j	        n| j
                     d S N)r)   r   r"   r4   tagfuncsrA   r'   create_tag_expressionr(   set_timeout_lastset_timeout_noner   r>   s     r   r<   zParenMatch.finish_paren_event`   s    ?ty?INNFA$*d&@AA$PPP
2$"2 
2		 1	5 	5 	5 	5 	5r   Nc                     	 | j                             d           |                                  | xj        dz  c_        d S )Nparenr$   )r   
tag_deleter7   r   )r   r=   s     r   r   zParenMatch.restore_eventk   sA    '	W%%%!!!r   c                 H    || j         k    r|                                  d S d S rH   )r   r   )r   timer_counts     r   handle_restore_timerzParenMatch.handle_restore_timerq   s/    $,&&      '&r   c                     	 | j                             d|d                    | j                             d| j                   d S )NrO   r   )r   tag_add
tag_configr,   rM   s     r   create_tag_openerzParenMatch.create_tag_openerx   sB    5	'71:...	Wd&899999r   c                    	 | j                             |d                   dv r|d         dz   }n|d         }| j                             d|d         |d         dz   |dz   |           | j                             d| j                   d S )Nr$   r   +1crO   r   z-1cr   rA   rU   rV   r,   r   r>   
rightindexs      r   create_tag_parenszParenMatch.create_tag_parens}   s    19==$$77 E)JJ J	'71:wqz%/?EAQS]^^^	Wd&899999r   c                     	 | j                             |d                   dv r|d         dz   }n|d         }| j                             d|d         |           | j                             d| j                   d S )Nr$   r   rY   rO   r   rZ   r[   s      r   rJ   z ParenMatch.create_tag_expression   sz    -9==$$77 E)JJ J	'71:z:::	Wd&899999r   )r   r   parens
expressionc                     	 | xj         dz  c_         | | j         | j                            d          fd}| j        j                            t          ||           d S )Nr$   r9   c                     ||j                             d          k    r|                    |           d S |j        j                            t          | |            d S )Nr9   )r   indexrS   r   
text_frameafterCHECK_DELAY)callmer   crc   s       r   rg   z+ParenMatch.set_timeout_none.<locals>.callme   sX    	1111))!,,,,,'--k66JJJJJr   )r   r   rc   r   rd   re   rf   )r   rg   s     r   rL   zParenMatch.set_timeout_none   sn    	#
 	 $22	K 	K 	K 	K 	%%k66BBBBBr   c                     	 | xj         dz  c_         | j        j                            | j        | | j         fd           d S )Nr$   c                 ,    |                      |          S rH   )rS   )r   rh   s     r   <lambda>z-ParenMatch.set_timeout_last.<locals>.<lambda>   s    d.G.G.J.J r   )r   r   rd   re   r(   )r   s    r   rK   zParenMatch.set_timeout_last   sY    T 	%%JJJ	L 	L 	L 	L 	Lr   rH   )__name__
__module____qualname__r   r0   r   classmethodr.   r4   r7   r?   rF   r<   r   rS   rW   r]   rJ   rI   rL   rK    r   r   r   r      s/       ( "@<	# 	# 	# < < [<* * *+ + +    	5 	5 	5   ! ! !: : :
: : :: : : $$#+	
 
HC C CL L L L Lr   r   __main__)mainz!idlelib.idle_test.test_parenmatch   )	verbosityN)idlelib.hyperparserr   idlelib.configr   rB   rf   r   r.   rl   unittestrr   rp   r   r   <module>rx      s    , + + + + + # # # # # #$$bL bL bL bL bL bL bL bLJ       zD	,:::::: r   