3
f$ @ sf d Z ddlmZ ddlmZ ddddZdZG d d
d
Zej e dkrbddl
mZ ed
dd dS )zParenMatch -- 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([{))]}d c @ s e Zd ZdZdZd%Zdd Zed d
Zdd Z d
d Z
dd Zdd Zdd Z
d&ddZdd Zdd Zdd Zdd Zeeeed Zd!d" Zd#d$ ZdS )'
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<>
c C s0 || _ |j| _|jj| j| j d| _d| _d S )Nr )editwintextZbindRESTORE_VIRTUAL_EVENT_NAME
restore_eventcounteris_restore_active)selfr r 7/opt/alt/python36/lib64/python3.6/idlelib/parenmatch.py__init__( s
zParenMatch.__init__c C sV t jddddd| _t jdddddd | _t jddd
ddd | _t jt j d
| _d S )N
extensionsr Zstyleopener)defaultzflash-delayinti )typer bellbool Zhilite)r Z GetOptionSTYLEFLASH_DELAYBELLZGetHighlightZCurrentTheme
HILITE_CONFIG)clsr r r reload3 s
zParenMatch.reloadc C s0 | j s,x| jD ]}| jj| j| qW d| _ dS )z5Activate mechanism to restore text from highlighting.TN)r RESTORE_SEQUENCESr Z event_addr )r seqr r r activate_restore> s zParenMatch.activate_restorec C s0 | j r,x| jD ]}| jj| j| qW d| _ dS )zRemove restore event bindings.FN)r r( r Zevent_deleter )r r) r r r deactivate_restoreE s zParenMatch.deactivate_restorec C s t | jdj }| j| dS )zAHandle editor 'show surrounding parens' event (menu or shortcut).insertbreak)r r get_surrounding_bracketsfinish_paren_event)r eventindicesr r r flash_paren_eventL s
zParenMatch.flash_paren_eventc C sN | j jd}|tkrdS t| jd}|j s0dS |jt| d}| j| dS )zHandle user input of closer.z insert-1cNT)r get_openersr r Z
is_in_coder. r/ )r r0 ZcloserZhpr1 r r r paren_closed_eventS s
zParenMatch.paren_closed_eventc C sT |d kr| j r| jj d S | j | jj| j| j| | | jrH| j n| j
d S )N)r$ r r r* tagfuncsr3 r" create_tag_expressionr# set_timeout_lastset_timeout_none)r r1 r r r r/ ` s
zParenMatch.finish_paren_eventNc C s&