B
    uG_ú"  ã               @   sÚ   d dl Z d dlZd dlZd dlZd\ZZd dlmZ d dlm	Z	 d dl
mZ dZdZdddefZdddefZejej d	 Zej› ejrŽejnd
› Zde› ZG dd„ dƒZe ¡  edkrÖd dlmZ eddd dS )é    N)r   é   )Úautocomplete_w)ÚidleConf)ÚHyperParser)TFTN)FTTNFÚ_Ú Ú.c               @   sn   e Zd Zddd„Zedd„ ƒZdd„ Zddd	„Zd
d„ Zdd„ Z	ddd„Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚAutoCompleteNc             C   s,   || _ |d k	r|j| _d | _d | _d | _d S )N)ÚeditwinÚtextÚautocompletewindowÚ_delayed_completion_idÚ_delayed_completion_index)Úselfr
   © r   ú6/opt/hscpipe/8.4/lib/python3.7/idlelib/autocomplete.pyÚ__init__!   s    zAutoComplete.__init__c             C   s   t jdddddd| _d S )NÚ
extensionsr	   Ú	popupwaitÚintr   )ÚtypeÚdefault)r   Z	GetOptionr   )Úclsr   r   r   Úreload,   s    zAutoComplete.reloadc             C   s   t  | j¡S )N)r   ZAutoCompleteWindowr   )r   r   r   r   Ú_make_autocomplete_window1   s    z&AutoComplete._make_autocomplete_windowc             C   s   | j r| j  ¡  d | _ d S )N)r   Zhide_window)r   Úeventr   r   r   Ú_remove_autocomplete_window4   s    
z(AutoComplete._remove_autocomplete_windowc             C   s   |   t¡ dS )NÚbreak)Úopen_completionsÚFORCE)r   r   r   r   r   Úforce_open_completions_event9   s    
z)AutoComplete.force_open_completions_eventc             C   s^   t |dƒr|js"| j dd¡ ¡ s&d S | jrD| j ¡ rD| j ¡  dS |  t	¡}|rVdS d S d S )NÚmc_statezinsert linestartÚinsertr   )
Úhasattrr!   r   ÚgetÚstripr   Z	is_activeÚcompleter   ÚTAB)r   r   Zopenedr   r   r   Úautocomplete_event>   s    

zAutoComplete.autocomplete_eventc             C   sd   | j  d¡}|tkr`|dkr tnt}| j  d¡| _| jd k	rJ| j  | j¡ | j  	| j
| j|¡| _d S )Nz	insert-1cr   r"   )r   r$   ÚTRIGGERSÚTRY_AÚTRY_FÚindexr   r   Úafter_cancelZafterr   Ú_delayed_open_completions)r   r   ZlastcharÚargsr   r   r   Útry_open_completions_eventL   s    
z'AutoComplete.try_open_completions_eventc             C   s&   d | _ | j d¡| jkr"|  |¡ d S )Nr"   )r   r   r,   r   r   )r   r/   r   r   r   r.   W   s    z&AutoComplete._delayed_open_completionsc             C   s   |\}}}}| j d k	r*| j | j ¡ d | _ t| jdƒ}| j dd¡}t|ƒ }}	| ¡ rÖ|rd|tkrÖ|  	¡  t}x$|r”||d  dt
 kr”|d8 }qrW |||	… }
|}	x |rÆ||d  dkrÆ|d8 }q¨W |||	… }nÒ| ¡ r¤|rî|tkr¤|  	¡  t}x:|r4||d  tks*t||d  ƒdkr4|d8 }qüW |||	… }
|rž||d  dkrž| dt|ƒ|d   ¡ | ¡ }|r˜|s¢| d¡d	kr¢d S nd
}nd S |r¾|s¾|
s¾d S |  ||¡}|d sØd S |  ¡ | _| j |dt|
ƒ |||¡ S )Nr"   zinsert linestartr   z'"é   r   z
insert-%dcú(éÿÿÿÿr   r   )r   r   r-   r   r
   r$   ÚlenZis_in_stringÚFILESr   ÚSEPSZ
is_in_codeÚATTRSÚID_CHARSÚordZ	set_indexZget_expressionÚfindÚfetch_completionsr   r   Zshow_window)r   r/   Z	evalfuncsr&   ZwantwinÚmodeZhpZcurlineÚiÚjZ
comp_startZ	comp_whatZ
comp_listsr   r   r   r   ]   sP    
0

zAutoComplete.open_completionsc       	      C   s`  y| j jjjj}W n   d }Y nX |r<| dd||fi ¡S |tkræ|dkr”tjj	tj	–}t
d|ƒ}| ¡  d|kr„tt
d|ƒƒ}qädd„ |D ƒ}nPy@|  |¡}t|ƒ}| ¡  d|krÄt|jƒ}ndd„ |D ƒ}W n   g g fS nd|tkrJ|dk rþd	}y0tj |¡}t |¡}| ¡  d
d„ |D ƒ}W n tk
rH   g g fS X |sT|}||fS d S )NÚexecZget_the_completion_listr   zdir()Ú__all__c             S   s    g | ]}|d d… dkr|‘qS )Nr   r   r   )Ú.0Úsr   r   r   ú
<listcomp>¶   s    z2AutoComplete.fetch_completions.<locals>.<listcomp>c             S   s    g | ]}|d d… dkr|‘qS )Nr   r   r   )rA   rB   r   r   r   rC   ¿   s    r   c             S   s    g | ]}|d d… dkr|‘qS )Nr   r   r   )rA   rB   r   r   r   rC   Ê   s    )r
   ÚflistZpyshellZinterpÚrpccltZ
remotecallr7   Ú__main__Ú__builtins__Ú__dict__ÚevalÚsortÚsortedÚ
get_entityÚdirr@   r5   ÚosÚpathÚ
expanduserÚlistdirÚOSError)	r   Zwhatr<   rE   Ú	namespaceZbiglZsmalllZentityZexpandedpathr   r   r   r;   ™   sL    







zAutoComplete.fetch_completionsc             C   s   t |tjtj–ƒS )N)rI   ÚsysÚmodulesrF   rH   )r   Únamer   r   r   rL   Ò   s    zAutoComplete.get_entity)N)N)N)Ú__name__Ú
__module__Ú__qualname__r   Úclassmethodr   r   r   r    r(   r0   r.   r   r;   rL   r   r   r   r   r	      s   


<9r	   rF   )Úmainz#idlelib.idle_test.test_autocompleteé   )Ú	verbosity)rF   rN   ÚstringrT   r7   r5   Zidlelibr   Zidlelib.configr   Zidlelib.hyperparserr   r   r'   r*   r+   Zascii_lettersÚdigitsr8   ÚsepÚaltsepr6   r)   r	   r   rW   Zunittestr[   r   r   r   r   Ú<module>   s(   
 9