o
     JAf$                     @   s
  	 d dl Z d dlZd dlZd dlZd dlZdd ejD Zed e  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rd dlm Z  e ddd dS dS )    Nc                 C   s   g | ]}|d vr|qS )>   FalseNoneTrue .0sr   r   +/usr/lib/python3.10/idlelib/autocomplete.py
<listcomp>   s    r
   )matchcase)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   s2   || _ |d ur|j| _|| _d | _d | _d | _d S N)editwintexttagsautocompletewindow_delayed_completion_id_delayed_completion_index)selfr   r   r   r   r	   __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	   reload4   s   
zAutoComplete.reloadc                 C   s   t j| j| jdS )N)r   )r   ZAutoCompleteWindowr   r   )r   r   r   r	   _make_autocomplete_window9   s   z&AutoComplete._make_autocomplete_windowc                 C   s   | j r| j   d | _ d S d S r   )r   Zhide_windowr   eventr   r   r	   _remove_autocomplete_window<   s   

z(AutoComplete._remove_autocomplete_windowc                 C   s   	 |  t dS )Nbreak)open_completionsFORCEr&   r   r   r	   force_open_completions_eventA   s   
z)AutoComplete.force_open_completions_eventc                 C   s\   	 t |dr	|js| jdd sd S | jr#| j r#| j  dS | t	}|r,dS d S )Nmc_stateinsert linestartinsertr)   )
hasattrr-   r   getstripr   Z	is_activecompleter*   TAB)r   r'   Zopenedr   r   r	   autocomplete_eventF   s   

zAutoComplete.autocomplete_eventc                 C   sj   	 | j d}|tv r3|dkrtnt}| j d| _| jd ur&| j | j | j 	| j
| j|| _d S d S )Nz	insert-1cr   r/   )r   r1   TRIGGERSTRY_ATRY_Findexr   r   after_cancelZafterr   _delayed_open_completions)r   r'   Zlastcharargsr   r   r	   try_open_completions_eventT   s   


z'AutoComplete.try_open_completions_eventc                 C   s,   	 d | _ | jd| jkr| | d S d S )Nr/   )r   r   r9   r   r*   )r   r<   r   r   r	   r;   _   s
   z&AutoComplete._delayed_open_completionsc                 C   s*  	 |\}}}}| j d ur| j| j  d | _ t| jd}| jdd}t| }}	| r||r3|tkr|| 	  t}|rU||d  dt
 vrU|d8 }|rU||d  dt
 vsE|||	 }
|}	|ru||d  dvru|d8 }|ru||d  dvsg|||	 }np| r|r|tkr| 	  t}|r||d  tv st||d  dkr|d8 }|r||d  tv st||d  dks|||	 }
|r||d  dkr|dt||d    | }|r|s|dd	krd S nd
}nd S |r|s|
sd S | ||}|d sd S |  | _| j|dt|
 ||| S )Nr/   r.   r   z'"   r   z
insert-%dc(r   r   )r   r   r:   r   r   r1   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	evalfuncsr3   ZwantwinmodeZhpZcurlineijZ
comp_startZ	comp_whatZ
comp_listsr   r   r	   r*   e   s`   
((

zAutoComplete.open_completionsc           	      C   sd  	 z	| j jjjj}W n   d }Y |r|dd||fi S |tkrz|dkrPi tjj	tj	}t
d|}|t |  d|v rHtt
d|}nbdd |D }nZz | |}t|}|  d|v rht|j}ndd |D }W n9   g g f Y S |tkr|dkrd	}ztj|}t|}|  d
d |D }W n ty   g g f Y S w |s|}||fS )NexecZget_the_completion_listr   zdir()__all__c                 S       g | ]}|d d dkr|qS Nr   r   r   r   r   r   r	   r
           z2AutoComplete.fetch_completions.<locals>.<listcomp>c                 S   rN   rO   r   r   r   r   r	   r
      rP   r   c                 S   rN   )Nr   r   r   r   r   r   r	   r
      rP   )r   flistZpyshellZinterprpccltZ
remotecallrD   __main____builtins____dict__evalextendcompletion_kwdssortsorted
get_entitydirrM   rB   ospath
expanduserlistdirOSError)	r   ZwhatrI   rR   	namespaceZbiglZsmalllZentityZexpandedpathr   r   r	   rH      sX   




zAutoComplete.fetch_completionsc                 C   s   	 t |i tjtjS r   )rV   sysmodulesrS   rU   )r   namer   r   r	   r[      s   zAutoComplete.get_entity)NNr   )__name__
__module____qualname__r   classmethodr$   r%   r(   r,   r5   r=   r;   r*   rH   r[   r   r   r   r	   r   &   s    



<:r   rS   )mainz#idlelib.idle_test.test_autocomplete   )	verbosity)!rS   keywordr]   stringrc   kwlistrX   rW   rY   rD   rB   Zidlelibr   Zidlelib.configr   Zidlelib.hyperparserr   r+   r4   r7   r8   ascii_lettersdigitsrE   sepaltseprC   r6   r   r$   rf   Zunittestrj   r   r   r   r	   <module>   s6    

 ;