
    z%i$                         	 d dl mZ d dlmZ ddddZdZ G d d	      Zej                          ed
k(  rd dl	m
Z
  e
dd       yy)    )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y
)
ParenMatchz<<parenmatch-check-restore>>)z
<KeyPress>z<ButtonPress>z<Key-Return>z<Key-BackSpace>c                     || _         |j                  | _        |j                  j                  | j                  | j                         d| _        d| _        y )Nr   )editwintextbindRESTORE_VIRTUAL_EVENT_NAMErestore_eventcounteris_restore_active)selfr   s     F/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/parenmatch.py__init__zParenMatch.__init__(   sH    LL	 	$9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      | _        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   reloadzParenMatch.reload3   s{    &&gxA	",,\-eCQ%%\&vqJ$11(2G2G2I2:<r   c                     	 | j                   s?| j                  D ](  }| j                  j                  | j                  |       * d| _         y y )NT)r   RESTORE_SEQUENCESr   	event_addr   r   seqs     r   activate_restorezParenMatch.activate_restore>   sL    ?%%-- J		##D$C$CSIJ%)D" &r   c                     	 | j                   r?| j                  D ](  }| j                  j                  | j                  |       * d| _         y y )NF)r   r0   r   event_deleter   r2   s     r   deactivate_restorezParenMatch.deactivate_restoreE   sL    (!!-- M		&&t'F'FLM%*D" "r   c                 p    	 t        | j                  d      j                         }| j                  |       y)Ninsertbreak)r   r   get_surrounding_bracketsfinish_paren_event)r   eventindicess      r   flash_paren_eventzParenMatch.flash_paren_eventL   s2    Kt||X6,,. 	(r   c                     	 | j                   j                  d      }|t        vry t        | j                  d      }|j                         sy |j                  t        |   d      }| j                  |       y )Nz	insert-1cT)r   get_openersr   r   
is_in_coder;   r<   )r   r=   closerhpr>   s        r   paren_closed_eventzParenMatch.paren_closed_eventS   sf    &{+!{3}}--hv.>E(r   c                 @   |'| j                   r| j                  j                          y | j                           | j                  j                  | j                  | j                        | |        | j                  r| j                          y | j                          y 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`   sy    ?tyyIINNA$**d&@&@A$P
2$"2"2		 	5 11	5r   Nc                     	 | j                   j                  d       | j                          | xj                  dz  c_        y )Nparenr$   )r   
tag_deleter7   r   )r   r=   s     r   r   zParenMatch.restore_eventk   s1    '		W%!r   c                 D    || j                   k(  r| j                          y y rH   )r   r   )r   timer_counts     r   handle_restore_timerzParenMatch.handle_restore_timerq   s    $,,&  'r   c                     	 | j                   j                  d|d          | j                   j                  d| j                         y )NrO   r   )r   tag_add
tag_configr,   rM   s     r   create_tag_openerzParenMatch.create_tag_openerx   s7    5		'71:.		Wd&8&89r   c                    	 | j                   j                  |d         dv r	|d   dz   }n|d   }| j                   j                  d|d   |d   dz   |dz   |       | j                   j                  d| j                         y )Nr$   r   +1crO   r   z-1cr   rA   rU   rV   r,   r   r>   
rightindexs      r   create_tag_parenszParenMatch.create_tag_parens}   s|    199==$7 E)J J		'71:wqz%/?EAQS]^		Wd&8&89r   c                     	 | j                   j                  |d         dv r	|d   dz   }n|d   }| j                   j                  d|d   |       | j                   j                  d| j                         y )Nr$   r   rY   rO   r   rZ   r[   s      r   rJ   z ParenMatch.create_tag_expression   si    -99==$7 E)J J		'71:z:		Wd&8&89r   )r   r   parens
expressionc                     	 | xj                   dz  c_         | | j                   | j                  j                  d      fd}| j                  j                  j                  t        ||       y )Nr$   r9   c                     ||j                   j                  d      k7  r|j                  |       y |j                  j                  j                  t        | |        y )Nr9   )r   indexrS   r   
text_frameafterCHECK_DELAY)callmer   crc   s       r   rg   z+ParenMatch.set_timeout_none.<locals>.callme   sA    		11))!,''--k66Jr   )r   r   rc   r   rd   re   rf   )r   rg   s     r   rL   zParenMatch.set_timeout_none   sT    	#
 	 $2	K 	%%k66Br   c                     	 | xj                   dz  c_         | j                  j                  j                  | j                  | | j                   fd       y )Nr$   c                 $    | j                  |      S rH   )rS   )r   rh   s     r   <lambda>z-ParenMatch.set_timeout_last.<locals>.<lambda>   s    d.G.G.J r   )r   r   rd   re   r(   )r   s    r   rK   zParenMatch.set_timeout_last   sC    T 	%%J	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!:
:: $$#+	
HC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J     z	,: r   