Your IP : 3.135.193.166


Current Path : /opt/alt/python35/lib64/python3.5/idlelib/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/idlelib/__pycache__/ParenMatch.cpython-35.pyc



��Yf:�@s�dZddlmZddlmZdddddd	iZd
ZGdd�d�Zed
kr�ddl	Z	e	j
ddd�dS)z�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.
�)�HyperParser)�idleConf�)�(�]�[�}�{�dc@sHeZdZdZdd1gfgZejddddd�Zejddd	d
ddd�Zej	ej
�d
�Zejdddd
ddd�ZdZ
d2Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd"S)3�
ParenMatcha�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.
    Zedit�Show surrounding parens�<<flash-paren>>�
extensions�style�default�
expressionzflash-delay�type�inti�Zhilite�bell�bool�z<<parenmatch-check-restore>>�
<KeyPress>�
<ButtonPress>�<Key-Return>�<Key-BackSpace>cCsT||_|j|_|jj|j|j�d|_d|_|j|j�dS)Nr)	�editwin�textZbind�RESTORE_VIRTUAL_EVENT_NAME�
restore_event�counter�is_restore_active�	set_style�STYLE)�selfr�r$�7/opt/alt/python35/lib64/python3.5/idlelib/ParenMatch.py�__init__;s	
		zParenMatch.__init__cCs@|js<x'|jD]}|jj|j|�qWd|_dS)NT)r �RESTORE_SEQUENCESrZ	event_addr)r#�seqr$r$r%�activate_restoreGs	zParenMatch.activate_restorecCs@|jr<x'|jD]}|jj|j|�qWd|_dS)NF)r r'rZevent_deleter)r#r(r$r$r%�deactivate_restoreMs	zParenMatch.deactivate_restorecCsX||_|dkr0|j|_|j|_n$|dkrT|j|_|j|_dS)Nrr)r"�create_tag_default�
create_tag�set_timeout_last�set_timeout�create_tag_expression�set_timeout_none)r#rr$r$r%r!Ss	zParenMatch.set_stylecCsWt|jd�j�}|dkr2|j�dS|j�|j|�|j�dS)N�insert)rr�get_surrounding_brackets�warn_mismatchedr)r,r-)r#�event�indicesr$r$r%�flash_paren_event\s


zParenMatch.flash_paren_eventcCs�|jjd�}|tkr"dSt|jd�}|j�sDdS|jt|d�}|dkrt|j�dS|j�|j	|�|j
�dS)Nz	insert-1cT)r�get�_openersrrZ
is_in_coder2r3r)r,r.)r#r4ZcloserZhpr5r$r$r%�paren_closed_eventfs


zParenMatch.paren_closed_eventNcCs-|jjd�|j�|jd7_dS)N�parenr)rZ
tag_deleter*r)r#r4r$r$r%rvs
zParenMatch.restore_eventcCs||jkr|j�dS)N)rr)r#Ztimer_countr$r$r%�handle_restore_timer{szParenMatch.handle_restore_timercCs|jr|jj�dS)N)�BELLrr)r#r$r$r%r3s	zParenMatch.warn_mismatchedcCs1|jjd|d�|jjd|j�dS)z'Highlight the single paren that matchesr:rN)r�tag_add�
tag_config�
HILITE_CONFIG)r#r5r$r$r%r+�szParenMatch.create_tag_defaultcCsk|jj|d�d	kr-|dd}n
|d}|jjd|d|�|jjd|j�dS)
zHighlight the entire expressionrrrrz+1cr:rN)rrr)rr7r=r>r?)r#r5Z
rightindexr$r$r%r/�s

z ParenMatch.create_tag_expressioncCsP|jd7_||j|jjd�dd�}|jjjt||�dS)zSHighlight will remain until user input turns it off
        or the insert has movedrr1cSsE||jjd�kr(|j|�n|jjjt||�dS)Nr1)r�indexr;r�
text_frame�after�CHECK_DELAY)�callmer#�cr@r$r$r%rD�sz+ParenMatch.set_timeout_none.<locals>.callmeN)rrr@rrArBrC)r#rDr$r$r%r0�s	zParenMatch.set_timeout_nonecCs;|jd7_|jjj|j||jdd��dS)z7The last highlight created will be removed after .5 secrcSs
|j|�S)N)r;)r#rEr$r$r%�<lambda>�sz-ParenMatch.set_timeout_last.<locals>.<lambda>N)rrrArB�FLASH_DELAY)r#r$r$r%r-�szParenMatch.set_timeout_last)rr
)rrrr)�__name__�
__module__�__qualname__�__doc__ZmenudefsrZ	GetOptionr"rGZGetHighlightZCurrentThemer?r<rr'r&r)r*r!r6r9rr;r3r+r/r0r-r$r$r$r%rs4		
r�__main__Nz!idlelib.idle_test.test_parenmatch�	verbosity�)rKZidlelib.HyperParserrZidlelib.configHandlerrr8rCrrHZunittest�mainr$r$r$r%�<module>s�

?>