B
� f�N � @ s� d Z ddlZddlT ddlmZ ddlmZmZ ddlm Z dZ
dZed fZd
Z
dZdZd
ZdZdZdZG dd� d�Zedkr�ddlmZ edddd� dS )zH
An auto-completion window for IDLE, used by the autocomplete extension
� N)�*)� Scrollbar)�FILES�ATTRS)�MC_SHIFTz<>z
z
z<>)zzzz zz
z
z zz
zz!<>zzzzc @ s� e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd � Zd!S )"�AutoCompleteWindowc C s� || _ d | _ | _| _d | _| _d | _d | _d | _d | _ d | _
d | _d | _d | _
| _ | _ | _ | _| _d| _d| _d S )NF)�widget�autocompletewindow�listbox� scrollbar�origselforeground�origselbackground�completions�morecompletions�mode�start�
startindex�lasttypedstart�userwantswindowZhideid�
keypressid�listupdateid�winconfigid�keyreleaseid�
doubleclickid�lastkey_was_tab�is_configuring)�selfr � r �;/opt/alt/python37/lib64/python3.7/idlelib/autocomplete_w.py�__init__ s $zAutoCompleteWindow.__init__c C s� t t| j�t|��}d}x&||k r>| j| || kr>|d7 }qW |t| j�k rv| j�d| j|f d| jt| j�f � |t|�k r�| j�d| j|f ||d � � || _d S )Nr � z%s+%dc)�min�lenr r �deleter �insert)r �newstart�min_len�ir r r �
_change_start> s z AutoCompleteWindow._change_startc C sX d}t | j�}x4||krB|| d }| j| |kr8|}q|d }qW t|t | j�d �S )z�Find the first index in self.completions where completions[i] is
greater or equal to s, or the last index if there is no such.
r � r )r" r r! )r �sr' �j�mr r r �_binary_searchK s
z!AutoCompleteWindow._binary_searchc
C s� | � |�}| j| dt|�� |kr(|S |d }t| j�}x@||krz|| d }| j| dt|�� |krp|}q<|d }q