
    MhL                       d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d
dlmZmZm Z  ddl!m"Z" g dZ#eZ$edd            Z%edd            Z&ddZ'ddZ(ddZ)dS )    )annotations)get_app)Bufferindentunindent)CompleteEvent)
	Conditionemacs_insert_mode
emacs_modehas_arghas_selectionin_paste_modeis_multilineis_read_onlyshift_selection_modevi_search_direction_reversed)Binding)KeyPressEvent)Keys)SelectionType   )ConditionalKeyBindingsKeyBindingsKeyBindingsBase   )get_by_name)load_emacs_bindingsload_emacs_search_bindings#load_emacs_shift_selection_bindingsreturnboolc                 2    t                      j        j        S N)r   current_bufferis_returnable     i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/prompt_toolkit/key_binding/bindings/emacs.pyr%   r%   $   s    99#11r'   c                 :    t                      j        j        dk    S )N-)r   key_processorargr&   r'   r(   is_argr-   )   s    99"&#--r'   r   c                    t                      } | j        t          } d          dwd            }  d          t          d                       d	          t          d
                       d|          t          d                       d          t          d                       d          t          d                       d          t          d                       d          t          d                       ddd|          t          d                       d|          t          d                       dd          t          d                       dd|          t          d                       dd|          t          d                       dd          t          d                       dd |          t          d!                       dd"|          t          d#                       dd|          t          d$                       dd%|          t          d&                       dd'|          t          d(                       d)          t          d*                       d+          t          d,                       d-d. |/          t          d0                       dd1d2 |/          t          d0                       dd3t                     t          d4                       dd5t                     t          d6                       dd7|          t          d8                       dd9|          t          d8                       dd|          t          d:                       dd;|          t          d<                       d=          t          d>                       d?t                     t          d@                       ddA          t          dB                       ddC          t          dD                       ddE          t          dF                      dG          dwdH            } dI          dwdJ            }dxfdL}dMD ]} ||            ddNt
                     dwdO            } dNt                    dwdP            }  ddQ|t          z            t          dR                       dQ|t          z  t           z            t          dR                     dydX dYt          j
                  dwfdZ            }	 ddYt          j
                  dwfd[            }
 dd\          dwd]            } ddE          dwd^            } dd_|          dwd`            } dda|          dwdb            } dd          dwdc            } dd          dwde            } dft                     dwdg            } dft                    dwdh            } dit                     dddjt                    dwdk                        } ddlt                    dwdm            } ddn          dwdo            } ddp          dwdq            } ddr|          dwds            } dtd5t                    dwdu            } dtd3t                    dwdv            }t          | t                    S )zz!
    Some e-macs extensions.
    escapeeventEr    Nonec                    dS )a\  
        By default, ignore escape key.

        (If we don't put this here, and Esc is followed by a key which sequence
        is not handled, we'll insert an Escape character in the input stream.
        Something we don't want and happens to easily in emacs mode.
        Further, people can always use ControlQ to do a quoted insert.)
        Nr&   r0   s    r(   _escz!load_emacs_bindings.<locals>._esc9   s	     	r'   zc-abeginning-of-linezc-bbackward-charzc-deletefilterz	kill-wordzc-eend-of-linezc-fforward-charc-leftbackward-wordc-rightforward-wordzc-xryyankc-ybczcapitalize-worddflzdowncase-worduzuppercase-wordzyank-pop	backspacezbackward-kill-word\zdelete-horizontal-spacec-homebeginning-of-bufferc-endend-of-bufferzc-_c                    dS NFr&   es    r(   <lambda>z%load_emacs_bindings.<locals>.<lambda>[   s     r'   )save_beforer9   undozc-uc                    dS rQ   r&   rR   s    r(   rT   z%load_emacs_bindings.<locals>.<lambda>_   s     r'   <zbeginning-of-history>zend-of-history.zyank-last-arg_zyank-nth-arg#zinsert-commentzc-ozoperate-and-get-nextzc-qzquoted-insert(zstart-kbd-macro)zend-kbd-macrorS   zcall-last-kbd-macrozc-nc                8    | j                                          dS )z
Next line.N)r$   	auto_downr4   s    r(   _nextz"load_emacs_bindings.<locals>._nextu   s     	&&(((((r'   zc-pc                F    | j                             | j                   dS )zPrevious line.countN)r$   auto_upr,   r4   s    r(   _prevz"load_emacs_bindings.<locals>._prevz   s&     	$$59$55555r'   strc                j       t                      d           d	 fd                        }dS )
ze
        Handle input of arguments.
        The first number needs to be preceded by escape.
        r8   r/   r0   r1   r    r2   c                2    |                                 d S r#   )append_to_arg_count)r0   rE   s    r(   r[   z4load_emacs_bindings.<locals>.handle_digit.<locals>._   s     %%a(((((r'   Nr0   r1   r    r2   )r   )rE   r[   handles   ` r(   handle_digitz)load_emacs_bindings.<locals>.handle_digit   s_     
'	"	"	"	!			) 	) 	) 	) 	) 
	 
#	"	) 	) 	)r'   
0123456789r*   c                B    | j         |                     d           dS dS ) Nr*   )_argrj   r4   s    r(   
_meta_dashz'load_emacs_bindings.<locals>._meta_dash   s.     :%%c***** r'   c                (    d| j         j        _        dS )zp
        When '-' is typed again, after exactly '-' has been given as an
        argument, ignore this.
        r*   N)appr+   r,   r4   s    r(   _dashz"load_emacs_bindings.<locals>._dash   s     '*	###r'   enterzaccept-linebuffr   charrd   intc                    |dk     r| j                             |d|           }n| j                             |d|          }|| xj        |z  c_        d S d S )Nr   T)in_current_linerd   )documentfind_backwardsfindcursor_position)rw   rx   rd   matchs       r(   character_searchz-load_emacs_bindings.<locals>.character_search   sx    199M00d5& 1  EE M&&tT&OOE  E)     r'   zc-]c                @     | j         | j        | j                   dS )z:When Ctl-] + a character is pressed. go to that character.Nr$   datar,   r0   r   s    r(   
_goto_charz'load_emacs_bindings.<locals>._goto_char   s'     	-uz59EEEEEr'   c                B     | j         | j        | j                    dS )zLike Ctl-], but backwards.Nr   r   s    r(   _goto_char_backwardsz1load_emacs_bindings.<locals>._goto_char_backwards   s)     	-uzEI:FFFFFr'   ac                    dS )zPrevious sentence.Nr&   r4   s    r(   _prev_sentencez+load_emacs_bindings.<locals>._prev_sentence         r'   c                    dS )zMove to end of sentence.Nr&   r4   s    r(   _end_of_sentencez-load_emacs_bindings.<locals>._end_of_sentence   r   r'   tc                    dS )z<
        Swap the last two words before the cursor.
        Nr&   r4   s    r(   _swap_charactersz-load_emacs_bindings.<locals>._swap_characters   r   r'   *c                    | j         }t          dd          }t          |j                            |j        |                    }d                    d |D                       }|                    |           dS )zR
        `meta-*`: Insert all possible completions of the preceding text.
        FT)text_insertedcompletion_requested c              3  $   K   | ]}|j         V  d S r#   )text).0rE   s     r(   	<genexpr>zGload_emacs_bindings.<locals>._insert_all_completions.<locals>.<genexpr>   s$      !>!>Q!&!>!>!>!>!>!>r'   N)r$   r   list	completerget_completionsr|   joininsert_text)r0   rw   complete_eventcompletionstext_to_inserts        r(   _insert_all_completionsz4load_emacs_bindings.<locals>._insert_all_completions   s    
 # 'UQUVVVN**4=.II
 

 !>!>+!>!>!>>>(((((r'   c                    | j         }|j        j        r+|xj        |j                            d          z  c_        dS |xj        |j                                        z  c_        dS )zc
        Move cursor back and forth between the start and end of the current
        line.
        Fafter_whitespaceN)r$   r|   is_cursor_at_the_end_of_liner   get_start_of_line_positionget_end_of_line_positionr0   buffers     r(   _toggle_start_endz.load_emacs_bindings.<locals>._toggle_start_end   s{     %?7 	Q""fo&P&P!& 'Q ' ' """" ""fo&N&N&P&PP""""r'   zc-@c                f    | j         }|j        r"|                    t          j                   dS dS )zN
        Start of the selection (if the current buffer is not empty).
        selection_typeN)r$   r   start_selectionr   
CHARACTERSr0   rw   s     r(   _start_selectionz-load_emacs_bindings.<locals>._start_selection   sC     #9 	J  0H IIIII	J 	Jr'   c-gc                6    d| j         _        d| j         _        dS )zK
        Control + G: Cancel completion menu and validation state.
        N)r$   complete_statevalidation_errorr4   s    r(   _cancelz$load_emacs_bindings.<locals>._cancel   s     
 /3+04---r'   c                8    | j                                          dS )#
        Cancel selection.
        N)r$   exit_selectionr4   s    r(   _cancel_selectionz.load_emacs_bindings.<locals>._cancel_selection   s    
 	++-----r'   zc-wkc                v    | j                                         }| j        j                            |           dS )z$
        Cut selected text.
        N)r$   cut_selectionrt   	clipboardset_datar0   r   s     r(   _cutz!load_emacs_bindings.<locals>._cut  s7     #1133	$$T*****r'   wc                v    | j                                         }| j        j                            |           dS )z%
        Copy selected text.
        N)r$   copy_selectionrt   r   r   r   s     r(   _copyz"load_emacs_bindings.<locals>._copy  s7    
 #2244	$$T*****r'   leftc                t    | j         }|xj        |j                            | j                  pdz  c_        dS )z3
        Cursor to start of previous word.
        rc   r   N)r$   r   r|   find_previous_word_beginningr,   r   s     r(   _start_of_wordz+load_emacs_bindings.<locals>._start_of_word  sC    
 %O88uy8IINQ	
r'   rightc                    | j         }|xj        |j                            | j                  p|j                                        z  c_        dS )z/
        Cursor to start of next word.
        rc   N)r$   r   r|   find_next_word_beginningr,   get_end_of_document_positionr   s     r(   _start_next_wordz-load_emacs_bindings.<locals>._start_next_word!  sT    
 %O44594EE >;;==	
r'   /c                z    | j         }|j        r|                                 dS |                    d           dS )z 
        M-/: Complete.
        T)select_firstN)r$   r   complete_nextstart_completion)r0   rD   s     r(   	_completez&load_emacs_bindings.<locals>._complete,  sJ    
   	2OOD11111r'   c-cc                H   | j         }|xj        |j                            d          z  c_        |j                                        \  }}|j                            |          \  }}|j                            |          \  }}t          |||dz   | j                   dS )z'
        Indent selected text.
        Tr   r   rc   N)r$   r   r|   r   selection_rangetranslate_index_to_positionr   r,   r0   r   from_tor[   s        r(   _indentz$load_emacs_bindings.<locals>._indent7  s    
 %&/"L"L! #M #
 #
 	
 O3355	r?>>uEEq;;B??Avub1fEI666666r'   c                    | j         }|j                                        \  }}|j                            |          \  }}|j                            |          \  }}t	          |||dz   | j                   dS )z)
        Unindent selected text.
        r   rc   N)r$   r|   r   r   r   r,   r   s        r(   	_unindentz&load_emacs_bindings.<locals>._unindentH  sx    
 %O3355	r?>>uEEq;;B??AQei888888r'   rk   )rE   rg   r    r2   )rw   r   rx   rg   rd   ry   r    r2   )r   addr
   r   r   r   r-   r%   r   r   Anyr   r   )key_bindingsinsert_moder5   ra   rf   rm   rE   rr   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   s                             @@r(   r   r   .   sK
    ==LF#KVH	 	 	 	 FF5MM+122333FF5MM+o..///*FF:k***;{+C+CDDDFF5MM+m,,---FF5MM+n--...FF8[11222FF9k.11222/FF5#s;///F0C0CDDD%FF5%%%k&&9&9:::FF8S+o66777-FF8S---k:K.L.LMMM-FF8S---k+.F.FGGGFF8S+n55666-FF8S---k/.J.JKKK-FF8S---k:J.K.KLLL-FF8S---k*.E.EFFF5FF8[555kBV6W6WXXX.FF8T+...{;T/U/UVVVFF8[!677888FF7OOK00111DFF5DDDF   LFF5%oo{KKKF   1FF8S-000=S1T1TUUU0FF8S-000=M1N1NOOO-FF8S---k/.J.JKKK-FF8S---k/.J.JKKK/FF8U;///N0K0KLLL-FF8S---k:J.K.KLLLFF5MM+455666
 )FF5-(((_)E)EFFFFF5#{#455666FF5#{?33444FF5#{#899:::VE]]) ) ) ]) VE]]6 6 6 ]6	) 	) 	) 	) 	) 	)   QVHc7(++++ + + ,++
 VC* * *  * BFF8W[=%@AAAM""  
 HFF7;6,FGGGM""  	* 	* 	* 	* VE48F F F F F F
 VHeTX&&G G G G G '&G
 VHc    VHc# # # # VHc+...   /. VHc+...) ) ) /.)  VE5Q Q Q Q VE]]J J J ]J VE=.)))5 5 5 *)5 VE-(((. . . )(. VE-(((VE3M222+ + + 32 )(+ VHc-000+ + + 10+ VHf
 
 
 
 VHg
 
 
 
 VHc+...2 2 2 /.2 VE3}---7 7 7 .-7  VE3}---
9 
9 
9 .-
9 ",
;;;r'   c                    t                      } | j        }ddlm}   |d          |j                     |d          |j                     |d          |j                     |d          |j                     |d          |j                     |d          |j                     |d          |j                     |d          |j                     |d	          |j	                     |d
d          |j	                     |dt          t           z            |j                     |dt          t           z            |j                     |dt          t          z            |j                     |dt          t          z            |j                    |dt                    dd            } |dt                    dd            }t          | t                    S )Nr   )searchzc-rzc-sr   r   updownrv   r/   T)eager?r8   r   nr0   r1   r    r2   c                ^    | j                             | j        j        d| j                   dS )zJump to next match.Finclude_current_positionrd   Nr$   apply_searchrt   current_search_stater,   r4   s    r(   
_jump_nextz.load_emacs_search_bindings.<locals>._jump_next  s>     	))I*%*) 	* 	
 	
 	
 	
 	
r'   Nc                `    | j                             | j        j         d| j                   dS )zJump to previous match.Fr   Nr   r4   s    r(   
_jump_prevz.load_emacs_search_bindings.<locals>._jump_prev  sA     	))Y++%*) 	* 	
 	
 	
 	
 	
r'   rk   )r   r   rp   r    start_reverse_incremental_search start_forward_incremental_searchabort_searchreverse_incremental_searchforward_incremental_searchaccept_searchr   r   r   r   )r   rl   r   r   r   s        r(   r   r   X  s~   ==LF FF5MM&9:::FF5MM&9:::FF5MM&%&&&FF5MM&%&&&FF5MM&3444FF5MM&3444FF4LL2333FF6NN64555FF7OOF())) !FF84   !5666 EFF3|'C&CCDDD/   EFF3|'C&CCDDD/   DFF3|&BBCCC/   DFF3|&BBCCC/   VC%%%
 
 
 &%
 VC%%%
 
 
 &%
 ",
;;;r'   c                 8  	 t                      } | j        }d%d	 |dt                      |dt                      |d	t                      |d
t                      |dt                      |dt                      |dt                      |dt                      |dt                      |dt                     d%	fd                                                                                                                        } |dt                     |dt                     |d	t                     |d
t                     |dt                     |dt                     |dt                     |dt                     |dt                     |dt                    d%	fd                                                                                                                        } |t          j        t                    d%d            } |dt          t          z            d%d            } |dt                    d%d            } |dt                    d%d            } |dt                     |dt                     |dt                     |dt                     |dt                     |dt                     |d t                     |d!t                     |d"t                     |d#t                    d%d$                                                                                                                        }t          | t                    S )&z?
    Bindings to select text with shift + cursor movements
    r0   r1   r    r2   c                \   | j         d         j        }|t          j        k    r"| j                            | j                   dS |t          j        k    r"| j                            | j                   dS t          j	        dt          j
        dt          j        dt          j        dt          j        dt          j        d	t          j        d
t          j        di}	 t#          ||                   }t%          |t&                    r|                    |            dS dS # t*          $ r Y dS w xY w)z
        Used for the shift selection mode. When called with
        a shift + movement key press event, moves the cursor
        as if shift is not pressed.
        r   rc   Nr7   r;   r6   r:   r=   r?   rM   rO   )key_sequencekeyr   ShiftUpr$   re   r,   	ShiftDownr`   	ShiftLeft
ShiftRight	ShiftHomeShiftEndControlShiftLeftControlShiftRightControlShiftHomeControlShiftEndr   
isinstancer   callKeyError)r0   r   key_to_commandbindings       r(   unshift_movez9load_emacs_shift_selection_bindings.<locals>.unshift_move  s(     #'$, ((uy(999F$.   ***;;;F NOO^N/M=!?"N!#8 /	1
	$!."566G '7++ $U#####$ $  	 	 	DD	s   D 
D+*D+zs-leftr8   zs-rightzs-upzs-downzs-homezs-endzc-s-leftz	c-s-rightzc-s-homezc-s-endc                   | j         }|j        rs|                    t          j                   |j        |j                                         |j        } |            |j        |k    r|                                 dS dS dS )z8
        Start selection with shift + movement.
        r   N)	r$   r   r   r   r   selection_stateenter_shift_moder   r   )r0   rw   original_positionr  s      r(   r   z=load_emacs_shift_selection_bindings.<locals>._start_selection  s     #9 	&  0H III#/ $55777 !% 4L#'888 ##%%%%%	& 	& 98r'   c                     |            | j         }|j        +|j        |j        j        k    r|                                 dS dS dS )z&
        Extend the selection
        N)r$   r  r   original_cursor_positionr   )r0   rw   r  s     r(   _extend_selectionz>load_emacs_shift_selection_bindings.<locals>._extend_selection  s`     	U#+#t';'TTT##%%%%% ,+TTr'   c                |    | j                                          t          d                              |            dS )z4
        Replace selection by what is typed
        zself-insertN)r$   r   r   r  r4   s    r(   _replace_selectionz?load_emacs_shift_selection_bindings.<locals>._replace_selection  s;    
 	**,,,M""''.....r'   rv   c                    | j                                          | j                             t                                  dS )z2
        A newline replaces the selection
        )copy_marginN)r$   r   newliner   r4   s    r(   _newlinez5load_emacs_shift_selection_bindings.<locals>._newline  s@    
 	**,,,$$]__1D$EEEEEr'   rJ   c                8    | j                                          dS )z#
        Delete selection.
        N)r$   r   r4   s    r(   _deletez4load_emacs_shift_selection_bindings.<locals>._delete  s    
 	**,,,,,r'   rC   c                    | j         }|j        r|                                 t          d                              |            dS )zS
        In shift selection mode, yanking (pasting) replace the selection.
        rB   N)r$   r  r   r   r  r   s     r(   _yankz2load_emacs_shift_selection_bindings.<locals>._yank  sK    
 # 	!   F  '''''r'   r   r   r   r   homeendr<   r>   rL   rN   c                    | j                                          | j        d         }| j                            |d           dS )r   r   T)firstN)r$   r   r   r+   feed)r0   	key_presss     r(   r   z4load_emacs_shift_selection_bindings.<locals>._cancel   sH     	++---&q)	  $ 77777r'   rk   )	r   r   r   r   r   r   r   r   r   )
r   rl   r   r  r  r  r  r   r   r  s
            @r(   r   r     s   
 ==LF#$ #$ #$ #$J VHm^,,,VI}n---VFM>***VHm^,,,VHm^,,,VG]N+++VJ~...VK///VJ~...VI}n---& & & & & .- /. 0/ /. ,+ -, -, +* .- -,&, VH1222VI2333VF/000VH1222VH1222VG0111VJ3444VK 4555VJ3444VI2333& & & & & 43 54 65 54 21 32 32 10 43 32& VDH1222/ / / 32/ VG0<?@@@F F F A@F VK 4555- - - 65- VE.///( ( ( 0/( VF/000VG0111VD-...VF/000VF/000VE.///VH1222VI2333VH1222VG01118 8 8 21 32 43 32 0/ 10 10 /. 21 108 ",
;;;r'   N)r    r!   )r    r   )*
__future__r   "prompt_toolkit.application.currentr   prompt_toolkit.bufferr   r   r   prompt_toolkit.completionr   prompt_toolkit.filtersr	   r
   r   r   r   r   r   r   r   r   'prompt_toolkit.key_binding.key_bindingsr   (prompt_toolkit.key_binding.key_processorr   prompt_toolkit.keysr   prompt_toolkit.selectionr   r   r   r   r   named_commandsr   __all__r1   r%   r-   r   r   r   r&   r'   r(   <module>r2     s   " " " " " " 6 6 6 6 6 6 : : : : : : : : : : 3 3 3 3 3 3                        < ; ; ; ; ; B B B B B B $ $ $ $ $ $ 2 2 2 2 2 2 O O O O O O O O O O ' ' ' ' ' '    2 2 2 2 . . . .g< g< g< g<T	?< ?< ?< ?<DY< Y< Y< Y< Y< Y<r'   