ó
    OÎh²L  ã                  ó  • S SK Jr  S SKJr  S SKJrJrJr  S SKJ	r	  S SK
JrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S
SKJrJrJ r   SSK!J"r"  / SQr#\r$\SS j5       r%\SS j5       r&SS jr'SS jr(SS jr)g)é    )Ú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_bindingsc                 ó>   • [        5       R                  R                  $ ©N)r   Úcurrent_bufferÚis_returnable© ó    Úf/home/mande/repo/quber/.venv/lib/python3.13/site-packages/prompt_toolkit/key_binding/bindings/emacs.pyr#   r#   $   s   € ä‹9×#Ñ#×1Ñ1Ð1r%   c                 óD   • [        5       R                  R                  S:H  $ )NÚ-)r   Úkey_processorÚargr$   r%   r&   Úis_argr+   )   s   € ä‹9×"Ñ"×&Ñ&¨#Ñ-Ð-r%   c                 ó¨
  ^^• [        5       n U R                  m[        nT" S5      SmS j5       nT" S5      " [        S5      5        T" S5      " [        S5      5        T" SUS9" [        S	5      5        T" S
5      " [        S5      5        T" S5      " [        S5      5        T" S5      " [        S5      5        T" S5      " [        S5      5        T" SSSUS9" [        S5      5        T" SUS9" [        S5      5        T" SS5      " [        S5      5        T" SSUS9" [        S5      5        T" SSUS9" [        S	5      5        T" SS5      " [        S5      5        T" SSUS9" [        S5      5        T" SSUS9" [        S5      5        T" SSUS9" [        S 5      5        T" SS!US9" [        S"5      5        T" SS#US9" [        S$5      5        T" S%5      " [        S&5      5        T" S'5      " [        S(5      5        T" S)S* US+9" [        S,5      5        T" SS-S. US+9" [        S,5      5        T" SS/[        ) S9" [        S05      5        T" SS1[        ) S9" [        S25      5        T" SS3US9" [        S45      5        T" SS5US9" [        S45      5        T" SSUS9" [        S65      5        T" SS7US9" [        S85      5        T" S95      " [        S:5      5        T" S;[        ) S9" [        S<5      5        T" SS=5      " [        S>5      5        T" SS?5      " [        S@5      5        T" SSA5      " [        SB5      5        T" SC5      SmSD j5       nT" SE5      SmSF j5       nSnU4SG jjnSH H  nU" U5        M     T" SSI[
        ) S9SmSJ j5       nT" SI[        S9SmSK j5       nT" SSLU[        -  S9" [        SM5      5        T" SLU[        -  [        ) -  S9" [        SM5      5        SoSN jmT" SO[        R                  5      SmU4SP jj5       n	T" SSO[        R                  5      SmU4SQ jj5       n
T" SSR5      SmSS j5       nT" SSA5      SmST j5       nT" SSUUS9SmSV j5       nT" SSWUS9SmSX j5       nT" SS5      SmSY j5       nT" SZ5      SmS[ j5       nT" S\[        ) S9SmS] j5       nT" S\[        S9SmS^ j5       nT" S_[        S9T" SSS`[        S9SmSa j5       5       nT" SSb[        S9SmSc j5       nT" SSd5      SmSe j5       nT" SSf5      SmSg j5       nT" SShUS9SmSi j5       nT" SjS1[        S9SmSk j5       nT" SjS/[        S9SmSl j5       n[        U [        5      $ )pz
Some e-macs extensions.
Úescapec                ó   • g)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$   ©Úevents    r&   Ú_escÚ!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                ó   • g©NFr$   ©Úes    r&   Ú<lambda>Ú%load_emacs_bindings.<locals>.<lambda>[   s   € ¨r%   )Úsave_beforer6   Úundozc-uc                ó   • grN   r$   rO   s    r&   rQ   rR   _   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-macrorP   zcall-last-kbd-macrozc-nc                ó8   • U R                   R                  5         g)z
Next line.N)r"   Ú	auto_downr/   s    r&   Ú_nextÚ"load_emacs_bindings.<locals>._nextu   s   € ð 	×Ñ×&Ñ&Õ(r%   zc-pc                óJ   • U R                   R                  U R                  S9  g)zPrevious line.©ÚcountN)r"   Úauto_upr*   r/   s    r&   Ú_prevÚ"load_emacs_bindings.<locals>._prevz   s   € ð 	×Ñ×$Ñ$¨5¯9©9Ð$Ò5r%   c                óL   >^ • T" T [         S9T" ST 5      SU 4S jj5       5       ng)zM
Handle input of arguments.
The first number needs to be preceded by escape.
r5   r-   c                ó(   >• U R                  T5        g r!   )Úappend_to_arg_count)r0   rB   s    €r&   rY   Ú4load_emacs_bindings.<locals>.handle_digit.<locals>._…   s   ø€ ð ×%Ñ% aÕ(r%   N©r0   ÚEÚreturnÚNone)r   )rB   rY   Úhandles   ` €r&   Úhandle_digitÚ)load_emacs_bindings.<locals>.handle_digit   s-   ù€ ñ 
�œ'Ñ	"Ù	�˜!Ó	ö	)ó 
ó 
#ñ	)r%   Ú
0123456789r(   c                óB   • U R                   c  U R                  S5        gg)Ú Nr(   )Ú_argri   r/   s    r&   Ú
_meta_dashÚ'load_emacs_bindings.<locals>._meta_dash�   s!   € ð �:‰:ÑØ×%Ñ% cÕ*ð r%   c                ó:   • SU R                   R                  l        g)zX
When '-' is typed again, after exactly '-' has been given as an
argument, ignore this.
r(   N)Úappr)   r*   r/   s    r&   Ú_dashÚ"load_emacs_bindings.<locals>._dash“   s   € ð '*ˆ�	‰	×ÑÕ#r%   Úenterzaccept-linec                ó²   • US:  a  U R                   R                  USU* S9nOU R                   R                  USUS9nUb  U =R                  U-  sl        g g )Nr   T)Úin_current_linerc   )ÚdocumentÚfind_backwardsÚfindÚcursor_position)ÚbuffÚcharrc   Úmatchs       r&   Úcharacter_searchÚ-load_emacs_bindings.<locals>.character_search¥   sd   € Ø�1‹9Ø—M‘M×0Ñ0Ø d°5°&ð 1ð ‰Eð —M‘M×&Ñ& t¸TÈÐ&ÐOˆEàÑØ× Ò  EÑ)Ö ð r%   zc-]c                óV   >• T" U R                   U R                  U R                  5        g)z:When Ctl-] + a character is pressed. go to that character.N©r"   Údatar*   ©r0   r†   s    €r&   Ú
_goto_charÚ'load_emacs_bindings.<locals>._goto_char°   s   ø€ ñ 	˜×-Ñ-¨u¯z©z¸5¿9¹9ÕEr%   c                óX   >• T" U R                   U R                  U R                  * 5        g)zLike Ctl-], but backwards.Nr‰   r‹   s    €r&   Ú_goto_char_backwardsÚ1load_emacs_bindings.<locals>._goto_char_backwards¶   s!   ø€ ñ 	˜×-Ñ-¨u¯z©z¸E¿I¹I¸:ÕFr%   Úac                ó   • g)zPrevious sentence.Nr$   r/   s    r&   Ú_prev_sentenceÚ+load_emacs_bindings.<locals>._prev_sentence¼   ó   � r%   c                ó   • g)zMove to end of sentence.Nr$   r/   s    r&   Ú_end_of_sentenceÚ-load_emacs_bindings.<locals>._end_of_sentenceÁ   r•   r%   Útc                ó   • g)z,
Swap the last two words before the cursor.
Nr$   r/   s    r&   Ú_swap_charactersÚ-load_emacs_bindings.<locals>._swap_charactersÆ   r•   r%   Ú*c                óà   • U R                   n[        SSS9n[        UR                  R	                  UR
                  U5      5      nSR                  S U 5       5      nUR                  U5        g)zB
`meta-*`: Insert all possible completions of the preceding text.
FT)Útext_insertedÚcompletion_requestedÚ c              3  ó8   #   • U  H  oR                   v •  M     g 7fr!   )Útext)Ú.0rB   s     r&   Ú	<genexpr>ÚGload_emacs_bindings.<locals>._insert_all_completions.<locals>.<genexpr>Û   s   é € Ð!>²+¨Q§&¦&²+ùs   ‚N)r"   r   ÚlistÚ	completerÚget_completionsr   ÚjoinÚinsert_text)r0   rƒ   Úcomplete_eventÚcompletionsÚtext_to_inserts        r&   Ú_insert_all_completionsÚ4load_emacs_bindings.<locals>._insert_all_completionsÍ   sd   € ð
 ×#Ñ#ˆô '°UÐQUÑVˆÜØ�N‰N×*Ñ*¨4¯=©=¸.ÓIó
ˆð
 Ÿ™Ñ!>±+Ó!>Ó>ˆØ×Ñ˜Õ(r%   c                ó  • U R                   nUR                  R                  (       a-  U=R                  UR                  R	                  SS9-  sl        gU=R                  UR                  R                  5       -  sl        g)zK
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_endÚ.load_emacs_bindings.<locals>._toggle_start_endÞ   sg   € ð ×%Ñ%ˆà�?‰?×7×7Ø×"Ò" f§o¡o×&PÑ&PØ!&ð 'Qð 'ñ Ö"ð ×"Ò" f§o¡o×&NÑ&NÓ&PÑPÖ"r%   zc-@c                óz   • U R                   nUR                  (       a  UR                  [        R                  S9  gg)z>
Start of the selection (if the current buffer is not empty).
©Úselection_typeN)r"   r£   Ústart_selectionr   Ú
CHARACTERS©r0   rƒ   s     r&   Ú_start_selectionÚ-load_emacs_bindings.<locals>._start_selectioní   s2   € ð ×#Ñ#ˆØ�9�9Ø× Ñ ´×0HÑ0HÐ ÒIð r%   úc-gc                óH   • SU R                   l        SU R                   l        g)z;
Control + G: Cancel completion menu and validation state.
N)r"   Úcomplete_stateÚvalidation_errorr/   s    r&   Ú_cancelÚ$load_emacs_bindings.<locals>._cancel÷   s    € ð
 /3ˆ×ÑÔ+Ø04ˆ×ÑÕ-r%   c                ó8   • U R                   R                  5         g)ú
Cancel selection.
N)r"   Úexit_selectionr/   s    r&   Ú_cancel_selectionÚ.load_emacs_bindings.<locals>._cancel_selectionÿ   s   € ð
 	×Ñ×+Ñ+Õ-r%   zc-wÚkc                ó‚   • U R                   R                  5       nU R                  R                  R	                  U5        g)z
Cut selected text.
N)r"   Úcut_selectionry   Ú	clipboardÚset_data©r0   rŠ   s     r&   Ú_cutÚ!load_emacs_bindings.<locals>._cut  s0   € ð ×#Ñ#×1Ñ1Ó3ˆØ�	‰	×Ñ×$Ñ$ TÕ*r%   Úwc                ó‚   • U R                   R                  5       nU R                  R                  R	                  U5        g)z
Copy selected text.
N)r"   Úcopy_selectionry   rÑ   rÒ   rÓ   s     r&   Ú_copyÚ"load_emacs_bindings.<locals>._copy  s0   € ð
 ×#Ñ#×2Ñ2Ó4ˆØ�	‰	×Ñ×$Ñ$ TÕ*r%   Úleftc                óš   • U R                   nU=R                  UR                  R                  U R                  S9=(       d    S-  sl        g)z#
Cursor to start of previous word.
rb   r   N)r"   r‚   r   Úfind_previous_word_beginningr*   r·   s     r&   Ú_start_of_wordÚ+load_emacs_bindings.<locals>._start_of_word  s>   € ð
 ×%Ñ%ˆØ×ÒØ�O‰O×8Ñ8¸u¿y¹yÐ8ÐI×NÈQñ	
Ör%   Úrightc                óÊ   • U R                   nU=R                  UR                  R                  U R                  S9=(       d    UR                  R                  5       -  sl        g)z
Cursor to start of next word.
rb   N)r"   r‚   r   Úfind_next_word_beginningr*   Úget_end_of_document_positionr·   s     r&   Ú_start_next_wordÚ-load_emacs_bindings.<locals>._start_next_word!  sN   € ð
 ×%Ñ%ˆØ×ÒØ�O‰O×4Ñ4¸5¿9¹9Ð4ÐE÷ >Ø�‰×;Ñ;Ó=ñ	
Ör%   Ú/c                ó~   • U R                   nUR                  (       a  UR                  5         gUR                  SS9  g)z
M-/: Complete.
T)Úselect_firstN)r"   rÅ   Úcomplete_nextÚstart_completion)r0   rA   s     r&   Ú	_completeÚ&load_emacs_bindings.<locals>._complete,  s3   € ð
 × Ñ ˆØ××Ø�O‰OÕà×Ñ¨DÐÒ1r%   úc-cc                óP  • U R                   nU=R                  UR                  R                  SS9-  sl        UR                  R	                  5       u  p#UR                  R                  U5      u  p$UR                  R                  U5      u  p4[        XUS-   U R                  S9  g)z
Indent selected text.
Tr²   r   rb   N)r"   r‚   r   rµ   Úselection_rangeÚtranslate_index_to_positionr   r*   ©r0   r¸   Úfrom_ÚtorY   s        r&   Ú_indentÚ$load_emacs_bindings.<locals>._indent7  s�   € ð
 ×%Ñ%ˆà×Ò &§/¡/×"LÑ"LØ!ð #Mð #
ñ 	
Õð —O‘O×3Ñ3Ó5‰	ˆØ—?‘?×>Ñ>¸uÓE‰ˆØ—‘×;Ñ;¸BÓ?‰ˆäˆv˜b 1™f¨E¯I©IÓ6r%   c                óø   • U R                   nUR                  R                  5       u  p#UR                  R                  U5      u  p$UR                  R                  U5      u  p4[	        XUS-   U R
                  S9  g)z
Unindent selected text.
r   rb   N)r"   r   rï   rð   r   r*   rñ   s        r&   Ú	_unindentÚ&load_emacs_bindings.<locals>._unindentH  sc   € ð
 ×%Ñ%ˆà—O‘O×3Ñ3Ó5‰	ˆØ—?‘?×>Ñ>¸uÓE‰ˆØ—‘×;Ñ;¸BÓ?‰ˆä�  Q¡¨e¯i©iÓ8r%   rk   )rB   Ústrrm   rn   )rƒ   r   r„   rù   rc   Úintrm   rn   )r   Úaddr
   r   r   r   r+   r#   r   r   ÚAnyr   r   )Úkey_bindingsÚinsert_moder1   r_   re   rp   rB   rv   rz   rŒ   r�   r“   r—   r›   r¯   r¹   rÁ   rÇ   rÌ   rÔ   rÙ   rÞ   rä   rë   rô   r÷   r†   ro   s                             @@r&   r   r   .   sÇ  ù€ ô “=€LØ×Ñ€Fä#€KáˆHÓó	ó ð	ñ ˆ5„M”+Ð1Ó2Ô3Ù
ˆ5„M”+˜oÓ.Ô/Ù
ˆ:˜kÒ*¬;°{Ó+CÔDÙ
ˆ5„M”+˜mÓ,Ô-Ù
ˆ5„M”+˜nÓ-Ô.Ù
ˆ8Ô”[ Ó1Ô2Ù
ˆ9Ô”k .Ó1Ô2Ù
ˆ5�#�s ;Ò/´¸FÓ0CÔDÙ
ˆ5˜Ò%¤k°&Ó&9Ô:Ù
ˆ8�SÔœ+ oÓ6Ô7Ù
ˆ8�S Ò-¬kÐ:KÓ.LÔMÙ
ˆ8�S Ò-¬k¸+Ó.FÔGÙ
ˆ8�SÔœ+ nÓ5Ô6Ù
ˆ8�S Ò-¬k¸/Ó.JÔKÙ
ˆ8�S Ò-¬kÐ:JÓ.KÔLÙ
ˆ8�S Ò-¬k¸*Ó.EÔFÙ
ˆ8�[¨Ò5´kÐBVÓ6WÔXÙ
ˆ8�T +Ò.¬{Ð;TÓ/UÔVá
ˆ8Ô”[Ð!6Ó7Ô8Ù
ˆ7„O”K Ó0Ô1á
ˆ5™¸ÒDÜ�FÓôñ ˆ5�%¡o¸{ÒKÜ�FÓôñ ˆ8�S¤- Ò0´Ð=SÓ1TÔUÙ
ˆ8�S¤- Ò0´Ð=MÓ1NÔOá
ˆ8�S Ò-¬k¸/Ó.JÔKÙ
ˆ8�S Ò-¬k¸/Ó.JÔKÙ
ˆ8�U ;Ò/´¸NÓ0KÔLÙ
ˆ8�S Ò-¬kÐ:JÓ.KÔLÙ
ˆ5„M”+Ð4Ó5Ô6ñ
 ˆ5œ-˜Ò(¬°_Ó)EÔFá
ˆ5�#Ô”{Ð#4Ó5Ô6Ù
ˆ5�#Ô”{ ?Ó3Ô4Ù
ˆ5�#Ô”{Ð#8Ó9Ô:áˆEƒ]ó)ó ð)ñ ˆEƒ]ó6ó ð6÷	)ó ˆÙ�QŽñ ñ ˆH�c¤7 (Ñ+ó+ó ,ð+ñ
 ˆCœÑó*ó  ð*ñ ˆ8�W [´=Ñ%@ÒAÜ�MÓ"ôñ
 ˆ7˜;¬Ñ6¼,¸ÑFÒGÜ�MÓ"ôô	*ñ ˆE”4—8‘8ÓöFó ðFñ
 ˆH�eœTŸX™XÓ&öGó 'ðGñ
 ˆH�cÓóó ðñ ˆH�cÓó#ó ð#ñ ˆH�c +Ñ.óó /ðñ ˆH�c +Ñ.ó)ó /ð)ñ  ˆE�5ÓóQó ðQñ ˆEƒ]óJó ðJñ ˆEœ=˜.Ñ)ó5ó *ð5ñ ˆEœ-Ñ(ó.ó )ð.ñ ˆEœ-Ñ(ÙˆE�3˜¤MÑ2ó+ó 3ó )ð+ñ ˆH�c¤-Ñ0ó+ó 1ð+ñ ˆH�fÓó
ó ð
ñ ˆH�gÓó
ó ð
ñ ˆH�c +Ñ.ó2ó /ð2ñ ˆE�3œ}Ñ-ó7ó .ð7ñ  ˆE�3œ}Ñ-ó
9ó .ð
9ô " ,´
Ó;Ð;r%   c                 ó˜  • [        5       n U R                  nSSKJn  U" S5      " UR                  5        U" S5      " UR
                  5        U" S5      " UR                  5        U" S5      " UR                  5        U" S5      " UR                  5        U" S5      " UR                  5        U" S5      " UR                  5        U" S5      " UR                  5        U" S	5      " UR                  5        U" S
SS9" UR                  5        U" S[        [        ) -  S9" UR                  5        U" S[        [        ) -  S9" UR
                  5        U" S[        [        -  S9" UR
                  5        U" S[        [        -  S9" UR                  5        U" S[        S9SS j5       nU" S[        S9SS j5       n[        U [        5      $ )Nr   )Úsearchzc-rzc-srí   rÃ   ÚupÚdownr|   r-   T)ÚeagerÚ?r5   ræ   Únc                óv   • U R                   R                  U R                  R                  SU R                  S9  g)zJump to next match.F©Úinclude_current_positionrc   N©r"   Úapply_searchry   Úcurrent_search_stater*   r/   s    r&   Ú
_jump_nextÚ.load_emacs_search_bindings.<locals>._jump_next…  s4   € ð 	×Ñ×)Ñ)Ø�I‰I×*Ñ*Ø%*Ø—)‘)ð 	*ò 	
r%   ÚNc                óx   • U R                   R                  U R                  R                  ) SU R                  S9  g)zJump to previous match.Fr  Nr	  r/   s    r&   Ú
_jump_prevÚ.load_emacs_search_bindings.<locals>._jump_prevŽ  s7   € ð 	×Ñ×)Ñ)Ø�Y‰Y×+Ñ+Ð+Ø%*Ø—)‘)ð 	*ò 	
r%   rk   )r   rû   rt   r   Ú start_reverse_incremental_searchÚ start_forward_incremental_searchÚabort_searchÚreverse_incremental_searchÚforward_incremental_searchÚaccept_searchr   r   r   r   )rý   ro   r   r  r  s        r&   r   r   X  s�  € Ü“=€LØ×Ñ€FÝñ ˆ5„M�&×9Ñ9Ô:Ù
ˆ5„M�&×9Ñ9Ô:á
ˆ5„M�&×%Ñ%Ô&Ù
ˆ5„M�&×%Ñ%Ô&Ù
ˆ5„M�&×3Ñ3Ô4Ù
ˆ5„M�&×3Ñ3Ô4Ù
ˆ4„L�×2Ñ2Ô3Ù
ˆ6„N�6×4Ñ4Ô5Ù
ˆ7„O�F×(Ñ(Ô)ñ ˆ8˜4Ò  ×!5Ñ!5Ô6ñ ˆ3”|Ô'CÐ&CÑCÒDØ×/Ñ/ôñ ˆ3”|Ô'CÐ&CÑCÒDØ×/Ñ/ôñ ˆ3”|Ô&BÑBÒCØ×/Ñ/ôñ ˆ3”|Ô&BÑBÒCØ×/Ñ/ôñ ˆCœÑ%ó
ó &ð
ñ ˆCœÑ%ó
ó &ð
ô " ,´
Ó;Ð;r%   c                 ó¢  ^	• [        5       n U R                  nS!S jm	U" S[        ) S9U" S[        ) S9U" S[        ) S9U" S[        ) S9U" S[        ) S9U" S[        ) S9U" S	[        ) S9U" S
[        ) S9U" S[        ) S9U" S[        ) S9S!U	4S jj5       5       5       5       5       5       5       5       5       5       nU" S[        S9U" S[        S9U" S[        S9U" S[        S9U" S[        S9U" S[        S9U" S	[        S9U" S
[        S9U" S[        S9U" S[        S9S!U	4S jj5       5       5       5       5       5       5       5       5       5       nU" [        R
                  [        S9S!S j5       nU" S[        [        -  S9S!S j5       nU" S[        S9S!S j5       nU" S[        S9S!S j5       nU" S[        S9U" S[        S9U" S[        S9U" S[        S9U" S[        S9U" S[        S9U" S[        S9U" S[        S9U" S[        S9U" S[        S9S!S  j5       5       5       5       5       5       5       5       5       5       n[        U [        5      $ )"z7
Bindings to select text with shift + cursor movements
c                ó¤  • U R                   S   R                  nU[        R                  :X  a$  U R                  R                  U R                  S9  gU[        R                  :X  a$  U R                  R                  U R                  S9  g[        R                  S[        R                  S[        R                  S[        R                  S[        R                  S[        R                  S	[        R                  S
[        R                   S0n [#        X!   5      n[%        U[&        5      (       a  UR)                  U 5        gg! [*         a     gf = f)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   rb   Nr4   r8   r3   r7   r:   r<   rJ   rL   )Úkey_sequenceÚkeyr   ÚShiftUpr"   rd   r*   Ú	ShiftDownr^   Ú	ShiftLeftÚ
ShiftRightÚ	ShiftHomeÚShiftEndÚControlShiftLeftÚControlShiftRightÚControlShiftHomeÚControlShiftEndr   Ú
isinstancer   ÚcallÚKeyError)r0   r  Úkey_to_commandÚbindings       r&   Úunshift_moveÚ9load_emacs_shift_selection_bindings.<locals>.unshift_move¢  s  € ð × Ñ  Ñ#×'Ñ'ˆà”$—,‘,ÓØ× Ñ ×(Ñ(¨u¯y©yÐ(Ñ9ØØ”$—.‘.Ó Ø× Ñ ×*Ñ*°·±Ð*Ñ;Øô �N‰N˜OÜ�O‰O˜^Ü�N‰NÐ/Ü�M‰M˜=Ü×!Ñ! ?Ü×"Ñ" NÜ×!Ñ!Ð#8Ü× Ñ  /ð	1
ˆð	$ä! .Ñ"5Ó6ˆGô ˜'¤7×+Ñ+à—‘˜UÕ#ð ,øô ó 	Ùð	ús   ÄE Å
EÅEzs-leftr5   zs-rightzs-upzs-downzs-homezs-endzc-s-leftz	c-s-rightzc-s-homezc-s-endc                ó4  >• U R                   nUR                  (       az  UR                  [        R                  S9  UR
                  b  UR
                  R                  5         UR                  nT" U 5        UR                  U:X  a  UR                  5         ggg)z(
Start selection with shift + movement.
r¼   N)	r"   r£   r¾   r   r¿   Úselection_stateÚenter_shift_moder‚   rË   )r0   rƒ   Úoriginal_positionr+  s      €r&   rÁ   Ú=load_emacs_shift_selection_bindings.<locals>._start_selectionÇ  s‹   ø€ ð ×#Ñ#ˆØ�9�9Ø× Ñ ´×0HÑ0HÐ ÑIà×#Ñ#Ñ/ð ×$Ñ$×5Ñ5Ô7ð !%× 4Ñ 4ÐÙ˜ÔØ×#Ñ#Ð'8Ó8ð ×#Ñ#Õ%ð 9ð r%   c                ó´   >• T" U 5        U R                   nUR                  b6  UR                  UR                  R                  :X  a  UR	                  5         ggg)z
Extend the selection
N)r"   r.  r‚   Úoriginal_cursor_positionrË   )r0   rƒ   r+  s     €r&   Ú_extend_selectionÚ>load_emacs_shift_selection_bindings.<locals>._extend_selectionç  sU   ø€ ñ 	�UÔØ×#Ñ#ˆà×ÑÑ+Ø×#Ñ# t×';Ñ';×'TÑ'TÓTà×#Ñ#Õ%ð Uð ,r%   c                ól   • U R                   R                  5         [        S5      R                  U 5        g)z$
Replace selection by what is typed
zself-insertN)r"   rÐ   r   r'  r/   s    r&   Ú_replace_selectionÚ?load_emacs_shift_selection_bindings.<locals>._replace_selectionþ  s)   € ð
 	×Ñ×*Ñ*Ô,Ü�MÓ"×'Ñ'¨Õ.r%   r|   c                ó„   • U R                   R                  5         U R                   R                  [        5       (       + S9  g)z"
A newline replaces the selection
)Úcopy_marginN)r"   rÐ   Únewliner   r/   s    r&   Ú_newlineÚ5load_emacs_shift_selection_bindings.<locals>._newline  s2   € ð
 	×Ñ×*Ñ*Ô,Ø×Ñ×$Ñ$´]³_Ô1DÐ$ÒEr%   rG   c                ó8   • U R                   R                  5         g)z
Delete selection.
N)r"   rÐ   r/   s    r&   Ú_deleteÚ4load_emacs_shift_selection_bindings.<locals>._delete  s   € ð
 	×Ñ×*Ñ*Õ,r%   r@   c                ó’   • U R                   nUR                  (       a  UR                  5         [        S5      R	                  U 5        g)zC
In shift selection mode, yanking (pasting) replace the selection.
r?   N)r"   r.  rÐ   r   r'  rÀ   s     r&   Ú_yankÚ2load_emacs_shift_selection_bindings.<locals>._yank  s7   € ð
 ×#Ñ#ˆØ××Ø×ÑÔ Ü�FÓ× Ñ  Õ'r%   rÛ   rà   r  r  ÚhomeÚendr9   r;   rI   rK   c                óŠ   • U R                   R                  5         U R                  S   nU R                  R	                  USS9  g)rÊ   r   T)ÚfirstN)r"   rË   r  r)   Úfeed)r0   Ú	key_presss     r&   rÇ   Ú4load_emacs_shift_selection_bindings.<locals>._cancel   s?   € ð 	×Ñ×+Ñ+Ô-à×&Ñ& qÑ)ˆ	Ø×Ñ× Ñ  °$Ð Ò7r%   rk   )	r   rû   r   r   r   rü   r   r   r   )
rý   ro   rÁ   r4  r7  r<  r?  rB  rÇ   r+  s
            @r&   r   r   š  s¶  ø€ ô
 “=€LØ×Ñ€Fô#$ñJ ˆHœm˜^Ñ,ÙˆIœ}˜nÑ-ÙˆFœM˜>Ñ*ÙˆHœm˜^Ñ,ÙˆHœm˜^Ñ,ÙˆGœ]˜NÑ+ÙˆJ¤˜~Ñ.ÙˆK¤ Ñ/ÙˆJ¤˜~Ñ.ÙˆIœ}˜nÑ-ö&ó .ó /ó 0ó /ó ,ó -ó -ó +ó .ó -ð&ñ, ˆHÔ1Ñ2ÙˆIÔ2Ñ3ÙˆFÔ/Ñ0ÙˆHÔ1Ñ2ÙˆHÔ1Ñ2ÙˆGÔ0Ñ1ÙˆJÔ3Ñ4ÙˆKÔ 4Ñ5ÙˆJÔ3Ñ4ÙˆIÔ2Ñ3ö&ó 4ó 5ó 6ó 5ó 2ó 3ó 3ó 1ó 4ó 3ð&ñ ŒD�H‰HÔ1Ñ2ó/ó 3ð/ñ ˆGÔ0´<Ñ?Ñ@óFó AðFñ ˆKÔ 4Ñ5ó-ó 6ð-ñ ˆEÔ.Ñ/ó(ó 0ð(ñ ˆFÔ/Ñ0ÙˆGÔ0Ñ1ÙˆDÔ-Ñ.ÙˆFÔ/Ñ0ÙˆFÔ/Ñ0ÙˆEÔ.Ñ/ÙˆHÔ1Ñ2ÙˆIÔ2Ñ3ÙˆHÔ1Ñ2ÙˆGÔ0Ñ1ó8ó 2ó 3ó 4ó 3ó 0ó 1ó 1ó /ó 2ó 1ð8ô " ,´
Ó;Ð;r%   N)rm   Úbool)rm   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__rl   r#   r+   r   r   r   r$   r%   r&   Ú<module>rW     sƒ   ðå "å 6ß :Ñ :Ý 3÷÷ ÷ õ <Ý BÝ $Ý 2ç OÑ OÝ 'ò€ð €ð ó2ó ð2ð ó.ó ð.ôg<ôT	?<õDY<r%   