a
    ñ»jrc  ã                   @   s´  d dl mZ d dlmZmZ ddlmZ dZG dd„ deƒZ	dd	„ Z
G d
d„ deƒZG dd„ deƒZeƒ ZG dd„ deƒZeƒ ZG dd„ deƒZeƒ ZG dd„ deƒZeƒ ZG dd„ deƒZeƒ ZG dd„ deƒZeƒ ZG dd„ deƒZeƒ ZG dd„ deƒZeƒ ZG dd„ deƒZeƒ ZG dd„ deƒZeƒ ZG d d!„ d!eƒZeƒ ZG d"d#„ d#eƒZeƒ ZG d$d%„ d%eƒZeƒ Zed&d'„ eƒ  ¡ D ƒƒZG d(d)„ d)eƒZG d*d+„ d+eƒZ e ƒ Z G d,d-„ d-eƒZ!e!ƒ Z!G d.d/„ d/eƒZ"e"ƒ Z"G d0d1„ d1eƒZ#e#ƒ Z#G d2d3„ d3eƒZ$G d4d5„ d5e$ƒZ%e%d6d7d8�Z&e$d6d7d8�Z&dCd:d;„Z'd<d=„ Z(e)d>k�r°e*d?d@e& +¡ f ƒ e*d?d#e'e&e&j,ƒf ƒ eD ]*\Z-Z.e.e&ƒZ/e*d?e-e'e&e/dAƒf ƒ �qve%dBƒZ0ee0_,dS )Dé    N)ÚbiterÚensure_unicodeé   )ÚwordmatcherFc                   @   s   e Zd ZdS )ÚNotAWordErrorN)Ú__name__Ú
__module__Ú__qualname__© r
   r
   úDE:\soccer\ml_env\Lib\site-packages\pyreadline3/lineeditor/lineobj.pyr      s   r   c                 C   s   t | ƒdkr| S d S ©Nr   ©Úord)Úcr
   r
   r   Ú
quote_char   s    r   c                   @   s   e Zd Zdd„ ZdS )ÚLinePositionerc                 C   s   t dƒ d S ©NzBase class !!!©ÚNotImplementedError©ÚselfÚliner
   r
   r   Ú__call__!   s    zLinePositioner.__call__N©r   r   r	   r   r
   r
   r
   r   r       s   r   c                   @   s   e Zd Zdd„ ZdS )ÚNextCharc                 C   s$   |j t|jƒk r|j d S |j S d S ©Nr   )ÚpointÚlenÚline_bufferr   r
   r
   r   r   &   s    
zNextChar.__call__Nr   r
   r
   r
   r   r   %   s   r   c                   @   s   e Zd Zdd„ ZdS )ÚPrevCharc                 C   s   |j dkr|j d S |j S d S ©Nr   r   ©r   r   r
   r
   r   r   1   s    

zPrevChar.__call__Nr   r
   r
   r
   r   r   0   s   r   c                   @   s   e Zd Zdd„ ZdS )ÚNextWordStartc                 C   s   |  |j|j¡|j S ©N)Únext_start_segmentr   Úis_word_tokenr   r   r
   r
   r   r   <   s    zNextWordStart.__call__Nr   r
   r
   r
   r   r"   ;   s   r"   c                   @   s   e Zd Zdd„ ZdS )ÚNextWordEndc                 C   s   |  |j|j¡|j S r#   )Únext_end_segmentr   r%   r   r   r
   r
   r   r   D   s    zNextWordEnd.__call__Nr   r
   r
   r
   r   r&   C   s   r&   c                   @   s   e Zd Zdd„ ZdS )ÚPrevWordStartc                 C   s   |  |j|j¡|j S r#   )Úprev_start_segmentr   r%   r   r   r
   r
   r   r   L   s    zPrevWordStart.__call__Nr   r
   r
   r
   r   r(   K   s   r(   c                   @   s   e Zd Zdd„ ZdS )Ú	WordStartc                 C   sl   |  | ¡ t|ƒt|ƒd … ¡r`t|ƒdkrX|  | ¡ t|ƒd t|ƒ… ¡rXt|ƒS |jS ntdƒ‚d S )Nr   r   úPoint is not in a word)r%   Úget_line_textÚPointr(   r   r   r   r
   r
   r   r   T   s    "ÿzWordStart.__call__Nr   r
   r
   r
   r   r*   S   s   r*   c                   @   s   e Zd Zdd„ ZdS )ÚWordEndc                 C   sd   |  | ¡ t|ƒt|ƒd … ¡rX|  | ¡ t|ƒd t|ƒd … ¡rPt|ƒS |jS ntdƒ‚d S )Nr   é   r+   )r%   r,   r-   r&   r   r   r   r
   r
   r   r   d   s    "ÿzWordEnd.__call__Nr   r
   r
   r
   r   r.   c   s   r.   c                   @   s   e Zd Zdd„ ZdS )ÚPrevWordEndc                 C   s   |  |j|j¡|j S r#   )Úprev_end_segmentr   r%   r   r   r
   r
   r   r   t   s    zPrevWordEnd.__call__Nr   r
   r
   r
   r   r0   s   s   r0   c                   @   s   e Zd Zdd„ ZdS )Ú	PrevSpacec                 C   sv   |j }||d |…  ¡ dkrH|dkrH||d |…  ¡ dkrH|d8 }q|dkrr||d |…  ¡ dkrr|d8 }qH|S )Nr   ú r   )r   r,   )r   r   r   r
   r
   r   r   |   s     
 
zPrevSpace.__call__Nr   r
   r
   r
   r   r2   {   s   r2   c                   @   s   e Zd Zdd„ ZdS )ÚStartOfLinec                 C   s   dS r   r
   r   r
   r
   r   r   Š   s    zStartOfLine.__call__Nr   r
   r
   r
   r   r4   ‰   s   r4   c                   @   s   e Zd Zdd„ ZdS )Ú	EndOfLinec                 C   s
   t |jƒS r#   ©r   r   r   r
   r
   r   r   ’   s    zEndOfLine.__call__Nr   r
   r
   r
   r   r5   ‘   s   r5   c                   @   s   e Zd Zdd„ ZdS )r-   c                 C   s   |j S r#   r!   r   r
   r
   r   r   š   s    zPoint.__call__Nr   r
   r
   r
   r   r-   ™   s   r-   c                   @   s   e Zd Zdd„ ZdS )ÚMarkc                 C   s   |j S r#   )Úmarkr   r
   r
   r   r   ¢   s    zMark.__call__Nr   r
   r
   r
   r   r7   ¡   s   r7   c                 C   s&   g | ]\}}t |tƒr|jj|f‘qS r
   )Ú
isinstancer   Ú	__class__r   )Ú.0ÚkeyÚvaluer
   r
   r   Ú
<listcomp>©   s   
þr>   c                   @   s   e Zd Zdd„ ZdS )Ú	LineSlicec                 C   s   t dƒ d S r   r   r   r
   r
   r   r   ´   s    zLineSlice.__call__Nr   r
   r
   r
   r   r?   ³   s   r?   c                   @   s   e Zd Zdd„ ZdS )ÚCurrentWordc                 C   s   t t|ƒt|ƒd ƒS r#   )Úslicer*   r.   r   r
   r
   r   r   ¹   s    zCurrentWord.__call__Nr   r
   r
   r
   r   r@   ¸   s   r@   c                   @   s   e Zd Zdd„ ZdS )ÚNextWordc                 C   s&   t |ƒ}t|_|j}t|ƒ}t||ƒS r#   )ÚTextLiner"   r   r&   rA   )r   r   ÚworkÚstartÚstopr
   r
   r   r   Á   s
    zNextWord.__call__Nr   r
   r
   r
   r   rB   À   s   rB   c                   @   s   e Zd Zdd„ ZdS )ÚPrevWordc                 C   s&   t |ƒ}t|_|j}t|ƒ}t||ƒS r#   )rC   r0   r   r(   rA   )r   r   rD   rF   rE   r
   r
   r   r   Í   s
    zPrevWord.__call__Nr   r
   r
   r
   r   rG   Ì   s   rG   c                   @   s   e Zd Zdd„ ZdS )Ú
PointSlicec                 C   s   t t|ƒt|ƒd d ƒS r   )rA   r-   r   r
   r
   r   r   Ù   s    zPointSlice.__call__Nr   r
   r
   r
   r   rH   Ø   s   rH   c                   @   sè   e Zd Zd5dd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
ee
e	ƒZefdd„Zdd„ Zdd„ Zd6dd„Zdd„ Zdd„ Zd7dd „Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ ZdS )8rC   Nc                 C   sÌ   g | _ d| _d| _g | _d| _t|tƒrj|j d d … | _ |d u rJ|j| _n|| _|d u rb|j| _q || _n6|  |¡ |d u r„d| _n|| _|d u ršd| _n|| _t	j
| _
t	j| _t	j| _t	j| _t	j| _d S )Nr   éÿÿÿÿF)r   Ú_pointr8   Ú
undo_stackÚ	overwriter9   rC   r   Ú_insert_textr   r%   r$   r'   r)   r1   ©r   Ztxtstrr   r8   r
   r
   r   Ú__init__ä   s2    



zTextLine.__init__c                 C   sD   |   ¡ }| jr0|| jd   ¡ kr0| j| jd _n| j |  ¡ ¡ d S ©NrI   )r,   rK   r   ÚappendÚcopy)r   Zl_textr
   r
   r   Ú	push_undo  s    zTextLine.push_undoc                 C   s>   t | jƒdkr,| j ¡  |  ¡  | j ¡  n|  ¡  g | _d S )Nr/   )r   rK   ÚpopÚset_top_undoÚ
reset_line©r   r
   r
   r   Úpop_undo  s    
zTextLine.pop_undoc                 C   s.   | j r*| j d }|j| _|j| _|j| _n d S rP   )rK   r   r   r8   )r   Zundor
   r
   r   rU     s    

zTextLine.set_top_undoc                 C   s   d| j | j| jf S )NzTextLine("%s",point=%s,mark=%s))r   r   r8   rW   r
   r
   r   Ú__repr__  s
    ýzTextLine.__repr__c                 C   s
   |   | ¡S r#   ©r:   rW   r
   r
   r   rR   %  s    zTextLine.copyc                 C   sF   t |tƒr|| ƒ}|t| jƒks$J ‚|t| jƒkr<t| jƒ}|| _d S r#   )r9   r   r   r   rJ   )r   r=   r
   r
   r   Ú	set_point(  s    

zTextLine.set_pointc                 C   s   | j S r#   )rJ   rW   r
   r
   r   Ú	get_point0  s    zTextLine.get_pointc                 C   sL   t dd„ | d|… jD ƒƒ}t | d|…  ¡ ƒ| d|… j d¡d  | S )z4Return the visible width of the text up to position.c                 S   s,   g | ]$}d t |ƒ  kr dkrn qd‘qS )i   iýÿ  Nr   ©r;   r   r
   r
   r   r>   8  ó    z/TextLine.visible_line_width.<locals>.<listcomp>Nú	é   )r   r   Úquoted_textÚcount)r   ÚpositionZextra_char_widthr
   r
   r   Úvisible_line_width5  s    ÿÿþÿzTextLine.visible_line_widthc                 C   s    dd„ | j D ƒ}d tt|ƒ¡S )Nc                 S   s   g | ]}t |ƒ‘qS r
   )r   r]   r
   r
   r   r>   A  r^   z(TextLine.quoted_text.<locals>.<listcomp>Ú )r   ÚjoinÚmapr   )r   Úquotedr
   r
   r   ra   @  s    zTextLine.quoted_textc                 C   s   | j }ttt|ƒƒ}d |¡S )Nre   )r   Úlistrg   r   rf   )r   Úbufr
   r
   r   r,   D  s    zTextLine.get_line_textc                 C   s4   dd„ t |ƒD ƒ| _|d u r*t| jƒ| _n|| _d S )Nc                 S   s   g | ]}|‘qS r
   r
   r]   r
   r
   r   r>   J  r^   z%TextLine.set_line.<locals>.<listcomp>)Ústrr   r   r   )r   ÚtextÚcursorr
   r
   r   Úset_lineI  s    zTextLine.set_linec                 C   s   g | _ d| _d S r   )r   r   rW   r
   r
   r   rV   P  s    zTextLine.reset_linec                 C   s   t | jƒ| _d S r#   )r   r   r   rW   r
   r
   r   Úend_of_lineT  s    zTextLine.end_of_liner   c                 C   sh   || }| j r8t|ƒD ]}|| j| j< |  jd7  _qn,t|ƒD ]"}| j | j|¡ |  jd7  _q@d S r   )rL   r   r   r   Úinsert)r   rl   Úargumentr   r
   r
   r   rM   W  s    zTextLine._insert_textc                 C   sæ   t |tƒr|| ƒ}t |tƒr¬|jd u r(ntdƒ‚|jd u rDt| ƒ}nt |jtƒr\| | ¡}n|j}|jd u rvt	| ƒ}nt |jtƒrŽ| | ¡}n|j}| j
| j||… dd�S t |tƒrÄ| j|| ƒ S t |tƒrØtdƒ‚n
| j| S d S )Nzstep is not "None"r   r!   z'Cannot use step in line buffer indexing)r9   r?   rA   ÚstepÚRuntimeErrorrE   r4   r   rF   r5   r:   r   ÚtupleÚ
IndexError)r   r<   rE   rF   r
   r
   r   Ú__getitem__c  s,    









zTextLine.__getitem__c                 C   sô   | j }t|tƒr|| ƒ}t|tƒrt|j}|j}t|tƒrB|| ƒ}n|d u rNd}t|tƒrb|| ƒ}qœ|d u rœt| ƒ}n(t|tƒr�|| ƒ}|d }n|}|d }| jd |… }| j|d … }|| | _||krÚ|||  | _ n||krð||krð|| _ d S r    )	r   r9   r?   rA   rE   rF   r   r5   r   )r   r<   r   rE   rF   ÚprevÚrestr
   r
   r   Ú__delitem__ƒ  s4    









zTextLine.__delitem__c                 C   sª   t |tƒr|| ƒ}t |tƒr*|j}|j}n(t |tƒrF|| ƒ}|d }n|}|d }| jd |… }|  |¡j}| j|d … }|| | }t|ƒt| ƒkr t| ƒ| _	|| _d S r   )
r9   r?   rA   rE   rF   r   r   r:   r   r   )r   r<   r=   rE   rF   rw   rx   Úoutr
   r
   r   Ú__setitem__   s"    




zTextLine.__setitem__c                 C   s
   t | jƒS r#   r6   rW   r
   r
   r   Ú__len__´  s    zTextLine.__len__c                 C   s   dd„ | j D ƒ| _ | S )Nc                 S   s   g | ]}|  ¡ ‘qS r
   )Úupper©r;   Úxr
   r
   r   r>   ¸  r^   z"TextLine.upper.<locals>.<listcomp>©r   rW   r
   r
   r   r}   ·  s    zTextLine.upperc                 C   s   dd„ | j D ƒ| _ | S )Nc                 S   s   g | ]}|  ¡ ‘qS r
   )Úlowerr~   r
   r
   r   r>   ¼  r^   z"TextLine.lower.<locals>.<listcomp>r€   rW   r
   r
   r   r�   »  s    zTextLine.lowerc                 C   s   |   |  ¡  ¡ | j¡ | S r#   )rn   r,   Ú
capitalizer   rW   r
   r
   r   r‚   ¿  s    zTextLine.capitalizec                 C   s   |   ¡  |¡S r#   )r,   Ú
startswith©r   Útxtr
   r
   r   rƒ   Ã  s    zTextLine.startswithc                 C   s   |   ¡  |¡S r#   )r,   Úendswithr„   r
   r
   r   r†   Æ  s    zTextLine.endswithc                 C   s   ||   ¡ v S r#   )r,   r„   r
   r
   r   Ú__contains__É  s    zTextLine.__contains__)NN)N)r   )r   r   r	   rO   rS   rX   rU   rY   rR   r[   r\   Úpropertyr   r-   rd   ra   r,   rn   rV   ro   rM   rv   ry   r{   r|   r}   r�   r‚   rƒ   r†   r‡   r
   r
   r
   r   rC   ã   s4   
!		


 rC   c                       sà  e Zd Zdm‡ fdd„	Zdd„ Zdndd„Zd	d
„ Zdd„ Zdd„ Zdodd„Z	dpdd„Z
dqdd„Zdrdd„Zdsdd„Zdtdd„Zdd„ Zdd„ Zdudd „Zdvd!d"„Zdwd#d$„Zdxd%d&„Zdyd'd(„Zdzd)d*„Zd+d,„ Zd{d-d.„Zd|d/d0„Zd}d1d2„Zd~d3d4„Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Zd=d>„ Z d?d@„ Z!dAdB„ Z"dCdD„ Z#dEdF„ Z$dGdH„ Z%dIdJ„ Z&dKdL„ Z'dMdN„ Z(dOdP„ Z)dQdR„ Z*dSdT„ Z+dUdV„ Z,dWdX„ Z-dYdZ„ Z.d[d\„ Z/d]d^„ Z0d_d`„ Z1dadb„ Z2dcdd„ Z3dedf„ Z4dgdh„ Z5didj„ Z6dkdl„ Z7‡  Z8S )ÚReadLineTextBufferNc                    s,   t ƒ  |||¡ d| _d| _d| _g | _d S )NTrI   )ÚsuperrO   Úenable_win32_clipboardÚselection_markÚenable_selectionÚ	kill_ringrN   rZ   r
   r   rO   Î  s
    zReadLineTextBuffer.__init__c                 C   s   d| j | j| j| jf S )Nz;ReadLineTextBuffer("%s",point=%s,mark=%s,selection_mark=%s))r   r   r8   rŒ   rW   r
   r
   r   rY   Ö  s    üzReadLineTextBuffer.__repr__r   c                 C   s   |   ¡  d| _|  ||¡ d S rP   )Údelete_selectionrŒ   rM   )r   Úcharrq   r
   r
   r   Úinsert_textÞ  s    zReadLineTextBuffer.insert_textc                 C   s   | j rt |  ¡ ¡ d S r#   )r‹   Ú	clipboardÚset_clipboard_textr,   rW   r
   r
   r   Úto_clipboardã  s    zReadLineTextBuffer.to_clipboardc                 C   s   d| _ t| _d S rP   )rŒ   r4   r   rW   r
   r
   r   Úbeginning_of_lineé  s    z$ReadLineTextBuffer.beginning_of_linec                 C   s   d| _ t| _d S rP   )rŒ   r5   r   rW   r
   r
   r   ro   í  s    zReadLineTextBuffer.end_of_linec                 C   s2   |dk r|   | ¡ d| _t|ƒD ]
}t| _q"d S ©Nr   rI   )Úbackward_charrŒ   Úranger   r   ©r   rq   Ú_r
   r
   r   Úforward_charñ  s
    zReadLineTextBuffer.forward_charc                 C   s2   |dk r|   | ¡ d| _t|ƒD ]
}t| _q"d S r–   )r›   rŒ   r˜   r   r   r™   r
   r
   r   r—   ø  s
    z ReadLineTextBuffer.backward_charc                 C   s2   |dk r|   | ¡ d| _t|ƒD ]
}t| _q"d S r–   )Úbackward_wordrŒ   r˜   r"   r   r™   r
   r
   r   Úforward_wordÿ  s
    zReadLineTextBuffer.forward_wordc                 C   s2   |dk r|   | ¡ d| _t|ƒD ]
}t| _q"d S r–   )r�   rŒ   r˜   r(   r   r™   r
   r
   r   rœ     s
    z ReadLineTextBuffer.backward_wordc                 C   s2   |dk r|   | ¡ d| _t|ƒD ]
}t| _q"d S r–   )Úbackward_word_endrŒ   r˜   r&   r   r™   r
   r
   r   Úforward_word_end  s
    z#ReadLineTextBuffer.forward_word_endc                 C   s2   |dk r|   | ¡ d| _t|ƒD ]
}t| _q"d S r–   )rŸ   rŒ   r˜   r&   r   r™   r
   r
   r   rž     s
    z$ReadLineTextBuffer.backward_word_endc                 C   s"   | j r| jdk r| j| _t| _d S r   )r�   rŒ   r   r4   rW   r
   r
   r   Ú"beginning_of_line_extend_selection  s    z5ReadLineTextBuffer.beginning_of_line_extend_selectionc                 C   s"   | j r| jdk r| j| _t| _d S r   )r�   rŒ   r   r5   rW   r
   r
   r   Úend_of_line_extend_selection!  s    z/ReadLineTextBuffer.end_of_line_extend_selectionc                 C   sD   |dk r|   | ¡ | jr,| jdk r,| j| _t|ƒD ]
}t| _q4d S r   )Úbackward_char_extend_selectionr�   rŒ   r   r˜   r   r™   r
   r
   r   Úforward_char_extend_selection&  s    z0ReadLineTextBuffer.forward_char_extend_selectionc                 C   sD   |dk r|   | ¡ | jr,| jdk r,| j| _t|ƒD ]
}t| _q4d S r   )r£   r�   rŒ   r   r˜   r   r™   r
   r
   r   r¢   .  s    z1ReadLineTextBuffer.backward_char_extend_selectionc                 C   sD   |dk r|   | ¡ | jr,| jdk r,| j| _t|ƒD ]
}t| _q4d S r   )Úbackward_word_extend_selectionr�   rŒ   r   r˜   r"   r™   r
   r
   r   Úforward_word_extend_selection6  s    z0ReadLineTextBuffer.forward_word_extend_selectionc                 C   sD   |dk r|   | ¡ | jr,| jdk r,| j| _t|ƒD ]
}t| _q4d S r   )r¥   r�   rŒ   r   r˜   r(   r™   r
   r
   r   r¤   >  s    z1ReadLineTextBuffer.backward_word_extend_selectionc                 C   sD   |dk r|   | ¡ | jr,| jdk r,| j| _t|ƒD ]
}t| _q4d S r   )Ú"backward_word_end_extend_selectionr�   rŒ   r   r˜   r&   r™   r
   r
   r   Ú!forward_word_end_extend_selectionF  s    z4ReadLineTextBuffer.forward_word_end_extend_selectionc                 C   sD   |dk r|   | ¡ | jr,| jdk r,| j| _t|ƒD ]
}t| _q4d S r   )r§   r�   rŒ   r   r˜   r0   r™   r
   r
   r   r¦   N  s    z5ReadLineTextBuffer.backward_word_end_extend_selectionc                 C   sX   | j rJ| jdkrJ| j| jk r2| | j| j…= d| _n| | j| j…= d| _dS d| _dS d S )Nr   rI   TF)r�   rŒ   r   rW   r
   r
   r   r�   X  s    z#ReadLineTextBuffer.delete_selectionc                 C   s<   |dk r|   | ¡ |  ¡ r$|d8 }t|ƒD ]
}| t= q,d S r    )Úbackward_delete_charr�   r˜   r-   r™   r
   r
   r   Údelete_chare  s    zReadLineTextBuffer.delete_charc                 C   sP   |dk r|   | ¡ |  ¡ r$|d8 }t|ƒD ]}| jdkr,|  ¡  |   ¡  q,d S r    )r©   r�   r˜   r   r—   r™   r
   r
   r   r¨   m  s    
z'ReadLineTextBuffer.backward_delete_charc                 C   s@   |dk r|   | ¡ |  ¡ r$|d8 }t|ƒD ]}| tt…= q,d S r    )Úbackward_delete_wordr�   r˜   r-   r"   r™   r
   r
   r   Úforward_delete_wordw  s    z&ReadLineTextBuffer.forward_delete_wordc                 C   s@   |dk r|   | ¡ |  ¡ r$|d8 }t|ƒD ]}| tt…= q,d S r    )r«   r�   r˜   r(   r-   r™   r
   r
   r   rª     s    z'ReadLineTextBuffer.backward_delete_wordc                 C   s   |   ¡ s| t= d| _d S rP   )r�   r@   rŒ   rW   r
   r
   r   Údelete_current_word‡  s    z&ReadLineTextBuffer.delete_current_wordc                 C   s    | t  dv r| tt…= d| _d S )Nz 	rI   )r-   r0   r"   rŒ   rW   r
   r
   r   Údelete_horizontal_spaceŒ  s    
z*ReadLineTextBuffer.delete_horizontal_spacec                 C   s8   | j }z| t  ¡ | t< || _ W n ty2   Y n0 d S r#   )r   r@   r}   r   ©r   Úpr
   r
   r   Úupcase_word“  s    
zReadLineTextBuffer.upcase_wordc                 C   s8   | j }z| t  ¡ | t< || _ W n ty2   Y n0 d S r#   )r   r@   r�   r   r®   r
   r
   r   Údowncase_word›  s    
z ReadLineTextBuffer.downcase_wordc                 C   s8   | j }z| t  ¡ | t< || _ W n ty2   Y n0 d S r#   )r   r@   r‚   r   r®   r
   r
   r   Úcapitalize_word£  s    
z"ReadLineTextBuffer.capitalize_wordc                 C   sX   t | ƒ}|dkrd S |t| ƒkr(|d }|d }| | | |  | |< | |< |d | _d S r    )r-   r   r   )r   Zp2Úp1r
   r
   r   Útranspose_chars­  s    z"ReadLineTextBuffer.transpose_charsc                 C   sŠ   t | ƒ}t | ƒ}| jt| ƒkr0t|_t|ƒ|_nt|_t|_t|ƒ}t|ƒ}|j}|j}|tt… | ||…< |tt… | ||…< || _d S r#   )rC   r   r   r(   r"   r&   r-   )r   Zword1Zword2Zstop1Zstop2Zstart1Zstart2r
   r
   r   Útranspose_words·  s    z"ReadLineTextBuffer.transpose_wordsc                 C   s&   |   | | jd … ¡ | j| jd …= d S r#   )Úadd_to_kill_ringr   r   rW   r
   r
   r   Ú	kill_lineÊ  s    zReadLineTextBuffer.kill_linec                 C   s    |   | d d … ¡ | d d …= d S r#   )r¶   rW   r
   r
   r   Úkill_whole_lineÎ  s    z"ReadLineTextBuffer.kill_whole_linec                 C   s   | t t…= d S r#   ©r4   r-   rW   r
   r
   r   Úbackward_kill_lineÒ  s    z%ReadLineTextBuffer.backward_kill_linec                 C   s   | t t…= d S r#   r¹   rW   r
   r
   r   Úunix_line_discardÕ  s    z$ReadLineTextBuffer.unix_line_discardc                 C   s   | t t…= dS )úKills to next word endingN)r-   r&   rW   r
   r
   r   Ú	kill_wordØ  s    zReadLineTextBuffer.kill_wordc                 C   s   |   ¡ s| tt…= d| _dS ©r¼   rI   N)r�   r(   r-   rŒ   rW   r
   r
   r   Úbackward_kill_wordÜ  s    
z%ReadLineTextBuffer.backward_kill_wordc                 C   s   |   ¡ s| tt…= d| _dS r¾   )r�   r-   r&   rŒ   rW   r
   r
   r   Úforward_kill_wordâ  s    
z$ReadLineTextBuffer.forward_kill_wordc                 C   s   |   ¡ s| tt…= d| _d S rP   )r�   r2   r-   rŒ   rW   r
   r
   r   Úunix_word_ruboutè  s    
z#ReadLineTextBuffer.unix_word_ruboutc                 C   s   d S r#   r
   rW   r
   r
   r   Úkill_regioní  s    zReadLineTextBuffer.kill_regionc                 C   s   d S r#   r
   rW   r
   r
   r   Úcopy_region_as_killð  s    z&ReadLineTextBuffer.copy_region_as_killc                 C   s   d S r#   r
   rW   r
   r
   r   Úcopy_backward_wordó  s    z%ReadLineTextBuffer.copy_backward_wordc                 C   s   d S r#   r
   rW   r
   r
   r   Úcopy_forward_wordö  s    z$ReadLineTextBuffer.copy_forward_wordc                 C   s   |   ¡  d S r#   )Úpaste_from_kill_ringrW   r
   r
   r   Úyankù  s    zReadLineTextBuffer.yankc                 C   s   d S r#   r
   rW   r
   r
   r   Úyank_popü  s    zReadLineTextBuffer.yank_popc                 C   s   | j | _d S r#   )r   r8   rW   r
   r
   r   Úset_mark  s    zReadLineTextBuffer.set_markc                 C   s   d S r#   r
   rW   r
   r
   r   Úexchange_point_and_mark  s    z*ReadLineTextBuffer.exchange_point_and_markc                 C   sn   | j rjt| jt| jƒƒ}t| jt| jƒƒ}| jdkr8dS t||ƒ}t||ƒ}d | j||… ¡}t 	|¡ dS )ú5Copy the text in the region to the windows clipboard.rI   Nre   )
r‹   Úminr8   r   r   r   Úmaxrf   r’   r“   )r   r8   rm   ÚbeginÚendÚtoclipboardr
   r
   r   Úcopy_region_to_clipboard  s    


z+ReadLineTextBuffer.copy_region_to_clipboardc                 C   s~   | j rz| jrz| jdkrzt| jt| jƒƒ}t| jt| jƒƒ}| jdkrHdS t||ƒ}t||ƒ}d | j||… ¡}t	 
|¡ dS )rË   r   rI   Nre   )r‹   r�   rŒ   rÌ   r   r   r   rÍ   rf   r’   r“   )r   rŒ   rm   rÎ   rÏ   rÐ   r
   r
   r   Úcopy_selection_to_clipboard  s    ÿþý


z.ReadLineTextBuffer.copy_selection_to_clipboardc                 C   s   |   ¡  |  ¡  d S r#   )rÒ   r�   rW   r
   r
   r   Úcut_selection_to_clipboard#  s    z-ReadLineTextBuffer.cut_selection_to_clipboardc                 C   s   |g| _ trt | ¡ ¡ d S r#   )rŽ   Úkill_ring_to_clipboardr’   r“   r,   r„   r
   r
   r   r¶   +  s    z#ReadLineTextBuffer.add_to_kill_ringc                 C   s   | j r|  | j d ¡ d S r   )rŽ   r‘   rW   r
   r
   r   rÆ   0  s    z'ReadLineTextBuffer.paste_from_kill_ring)NN)r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )9r   r   r	   rO   rY   r‘   r”   r•   ro   r›   r—   r�   rœ   rŸ   rž   r    r¡   r£   r¢   r¥   r¤   r§   r¦   r�   r©   r¨   r«   rª   r¬   r­   r°   r±   r²   r´   rµ   r·   r¸   rº   r»   r½   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÇ   rÈ   rÉ   rÊ   rÑ   rÒ   rÓ   r¶   rÆ   Ú__classcell__r
   r
   rZ   r   r‰   Í  sj   




















r‰   zasff asFArw  ewrWErhgé   r!   Ú.c                    s8   t | jƒ}‡fdd„‰ d ‡ ‡fdd„t|d ƒD ƒ¡S )Nc                    s   | rˆ S dS d S )Nr3   r
   )Zis_bool)Úchrr
   r   Úchoice=  s    zshow_pos.<locals>.choicere   c                    s   g | ]}ˆ ˆ|kƒ‘qS r
   r
   )r;   Úidx)rÙ   Úposr
   r   r>   C  r^   zshow_pos.<locals>.<listcomp>r   )r   r   rf   r˜   )ÚbuffrÛ   rØ   Zl_nr
   )rÙ   rØ   rÛ   r   Úshow_pos:  s    
rÝ   c                 C   s’   t d|jj  dd¡ƒ | j}t d| ƒ |D ]^}t| |d�}dgt|ƒd  }||ƒ}||krjd||< nd	||< d
||< t dd |¡ ƒ q.d S )Nz %s é(   ú-z"%s"r!   r3   r   ú&r×   ú^re   )Úprintr:   r   Úcenterr   rC   r   rf   )rÜ   ZpointsZ
positionerZbuffstrr   Úbrz   rÛ   r
   r
   r   Útest_positionerF  s    
rå   Ú__main__z
%-15s "%s"ZPositionrá   zkjjk asads   asad)r×   )1Zpyreadline3.clipboardr’   Zpyreadline3.unicode_helperr   r   re   r   rÔ   ru   r   r   Úobjectr   r   r   r"   r&   r(   r*   r.   r0   r2   r4   r5   r-   r7   ÚkÚsortedÚglobalsÚitemsZall_positionersr?   r@   rB   rG   rH   rC   r‰   ÚqrÝ   rå   r   râ   r,   r   ÚnameZpositioner_qZpos_qZl_tr
   r
   r
   r   Ú<module>   s~   þÿ		 k  k

