o
    �õ±j=  ã                   @  sª   d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZmZ d dlmZ ddlmZ dd	lmZ d
gZeZddd„Zeddd„ƒZeddd„ƒZddd
„ZdS )é    )Úannotations)Úget_app)Ú	ConditionÚemacs_insert_modeÚhas_selectionÚin_paste_modeÚis_multilineÚvi_insert_mode)ÚKeyPressÚKeyPressEvent)ÚKeysé   )ÚKeyBindingsé   )Úget_by_nameÚload_basic_bindingsÚeventÚEÚreturnÚboolc                 C  s   | j  S )zXCallable that returns True when the previous event was delivered to
    another handler.)Ú	is_repeat©r   © r   úœ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/basic.pyÚif_no_repeat   s   r   c                   C  s   t tƒ jjƒS ©N)r   r   Úcurrent_bufferÚtextr   r   r   r   Úhas_text_before_cursor    s   r   c                   C  s   t ƒ jS r   )r   Úquoted_insertr   r   r   r   Úin_quoted_insert%   s   r    r   c               ]   C  s   t ƒ } ttB }| j}|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|d	ƒ|d
ƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|d ƒ|d!ƒ|d"ƒ|d#ƒ|d$ƒ|d%ƒ|d&ƒ|d'ƒ|d(ƒ|d)ƒ|d*ƒ|d+ƒ|d,ƒ|d-ƒ|d.ƒ|d/ƒ|d0ƒ|d1ƒ|d2ƒ|d3ƒ|d4ƒ|d5ƒ|d6ƒ|d7ƒ|d8ƒ|d9ƒ|d:ƒ|d;ƒ|d<ƒ|d=ƒ|d>ƒ|d?ƒ|d@ƒ|dAƒ|dBƒ|dCƒ|dDƒ|dEƒ|dFƒ|dGƒ|dHƒ|dIƒ|dJƒ|dKƒ|dLƒ|dMƒ|dNƒ|dOƒ|dPƒ|dQƒ|dRƒ|dSƒ|dTƒ|dUƒ|dVƒ|dWƒ|dXƒ|dYƒ|tjƒd…d^d_„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ}|dAƒtd`ƒƒ |dBƒtdaƒƒ |d<ƒtdbƒƒ |d;ƒtdcƒƒ |dRƒtddƒƒ |dSƒtdeƒƒ |dƒtdfƒƒ |d|dg�tdhƒƒ |d|dg�tdiƒƒ |d8|tdj�tdkƒƒ |dE|tdj�tdlƒƒ |dG|tdj�tdlƒƒ |tj|tdj�tdmƒƒ |d|dg�tdnƒƒ |d	|dg�tdoƒƒ |dJ|dg�tdpƒƒ |d|dg�tdqƒƒ |dHt	 dg�tddƒƒ |dIt	 dg�tdeƒƒ |dt
|@ dg�tdlƒƒ |dr|t@ dg�d…dsdt„ƒ}|d
ƒd…dudv„ƒ}|d9ƒd…dwdx„ƒ}|d:ƒd…dydz„ƒ}|dEt	dg�d…d{d|„ƒ}|dƒd…d}d~„ƒ}	|tjƒd…dd€„ƒ}
|tjtd�d‚�d…dƒd„„ƒ}| S )†Nzc-azc-bzc-czc-dzc-ezc-fzc-gzc-hzc-izc-jzc-kzc-lzc-mzc-nzc-ozc-pzc-qzc-rzc-szc-tzc-uzc-vzc-wzc-xzc-yzc-zÚf1Úf2Úf3Úf4Úf5Úf6Úf7Úf8Úf9Úf10Úf11Úf12Úf13Úf14Úf15Úf16Úf17Úf18Úf19Úf20Úf21Úf22Úf23Úf24zc-@zc-\zc-]zc-^zc-_Ú	backspaceÚupÚdownÚrightÚleftzs-upzs-downzs-rightzs-leftÚhomeÚendzs-homezs-endÚdeletezs-deletezc-deleteÚpageupÚpagedownzs-tabÚtabzc-s-leftz	c-s-rightzc-s-homezc-s-endzc-leftzc-rightzc-upzc-downzc-homezc-endÚinsertzs-insertzc-insertz<sigint>r   r   r   ÚNonec                 S  s   dS )aM  
        First, for any of these keys, Don't do anything by default. Also don't
        catch them in the 'Any' handler which will insert them as data.

        If people want to insert these characters as a literal, they can always
        do by doing a quoted insert. (ControlQ in emacs mode, ControlV in Vi
        mode.)
        Nr   r   r   r   r   Ú_ignore/   s   cz$load_basic_bindings.<locals>._ignorezbeginning-of-linezend-of-linezbackward-charzforward-charzprevious-historyznext-historyzclear-screen)Úfilterz	kill-linezunix-line-discard)rG   Úsave_beforezbackward-delete-charzdelete-charzself-insertztranspose-charszmenu-completezmenu-complete-backwardzunix-word-ruboutÚenterc                 S  s   | j jtƒ  d� dS )z6
        Newline (in case of multiline input.
        )Úcopy_marginN)r   Únewliner   r   r   r   r   Ú_newline¼   s   z%load_basic_bindings.<locals>._newlinec                 S  s   | j jttjdƒdd� dS )zË
        By default, handle \n as if it were a \r (enter).
        (It appears that some terminals send \n instead of \r when pressing
        enter. - at least the Linux subsystem for Windows.)
        úT)ÚfirstN)Úkey_processorÚfeedr
   r   ÚControlMr   r   r   r   Ú	_newline2Ã   s   z&load_basic_bindings.<locals>._newline2c                 S  ó   | j j| jd� d S ©N)Úcount)r   Úauto_upÚargr   r   r   r   Ú_go_upÎ   ó   z#load_basic_bindings.<locals>._go_upc                 S  rS   rT   )r   Ú	auto_downrW   r   r   r   r   Ú_go_downÒ   rY   z%load_basic_bindings.<locals>._go_downc                 S  s   | j  ¡ }| jj |¡ d S r   )r   Úcut_selectionÚappÚ	clipboardÚset_data©r   Údatar   r   r   Ú_cutÖ   s   
z!load_basic_bindings.<locals>._cutc                 S  s   | j  | j¡ dS )aj  
        By default, control-Z should literally insert Ctrl-Z.
        (Ansi Ctrl-Z, code 26 in MSDOS means End-Of-File.
        In a Python REPL for instance, it's possible to type
        Control-Z followed by enter to quit.)

        When the system bindings are loaded and suspend-to-background is
        supported, that will override this binding.
        N)r   Úinsert_textra   r   r   r   r   Ú_insert_ctrl_zÝ   s   z+load_basic_bindings.<locals>._insert_ctrl_zc                 S  s.   | j }| dd¡}| dd¡}| j |¡ dS )z)
        Pasting from clipboard.
        z
Ú
rM   N)ra   Úreplacer   rc   r`   r   r   r   Ú_pasteê   s   z#load_basic_bindings.<locals>._pasteT)rG   Úeagerc                 S  s   | j j| jdd� d| j_dS )z'
        Handle quoted insert.
        F)Ú	overwriteN)r   rc   ra   r]   r   r   r   r   r   Ú_insert_textù   s   z)load_basic_bindings.<locals>._insert_text)r   r   r   rE   )r   r	   r   Úaddr   ÚIgnorer   r   ÚAnyr   r   r   ÚBracketedPaster    )Úkey_bindingsÚinsert_modeÚhandlerF   rL   rR   rX   r[   rb   rd   rg   rj   r   r   r   r   *   s  ¾ÿÿÿÿÿ

N)r   r   r   r   )r   r   )r   r   )Ú
__future__r   Ú"prompt_toolkit.application.currentr   Úprompt_toolkit.filtersr   r   r   r   r   r	   Ú(prompt_toolkit.key_binding.key_processorr
   r   Úprompt_toolkit.keysr   ro   r   Únamed_commandsr   Ú__all__r   r   r   r    r   r   r   r   r   Ú<module>   s     ÿ
