ó
±xYc           @  sÍ  d  d l  m Z d  d l m Z m Z m Z m Z d  d l m Z d  d l	 m
 Z
 m Z m Z d  d l m Z m Z m Z m Z m Z d  d l 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 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* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ m0 Z0 m1 Z1 d d l2 m3 Z3 d d l4 m5 Z5 m6 Z6 m7 Z7 d  d l j8 Z8 d  d l9 m: Z: d  d l; Z; d  d l< Z< d  d l= Z= y d  d l> m? Z? Wn e@ k
 rûd „  Z? n Xd d d d f ZA e< jB r,e= jC jD d ƒ ZC n	 e= jC ZC eC d ZE d eF f d „  ƒ  YZG d eF f d „  ƒ  YZH d „  ZI d  „  ZJ eK d! „ ZL d" „  ZM d# „  ZN eK e d$ „ ZO d% „  ZP d& e f d' „  ƒ  YZQ d S((   iÿÿÿÿ(   t   unicode_literals(   t   ClipboardDatat   indentt   unindentt   reshape_text(   t   Document(   t   IncrementalSearchDirectiont   SEARCH_BUFFERt   SYSTEM_BUFFER(   t   Filtert	   Conditiont   HasArgt   Alwayst
   IsReadOnly(   t   ViNavigationModet   ViInsertModet   ViInsertMultipleModet   ViReplaceModet   ViSelectionModet   ViWaitingForTextObjectModet   ViDigraphModet   ViMode(   t   DIGRAPHS(   t   CharacterFindt	   InputMode(   t   Keys(   t   find_window_for_buffer_name(   t   SelectionTypet   SelectionStatet	   PasteModei   (   t   scroll_forwardt   scroll_backwardt   scroll_half_page_upt   scroll_half_page_downt   scroll_one_line_upt   scroll_one_line_downt   scroll_page_upt   scroll_page_down(   t   get_by_namei   (   t   Registryt   ConditionalRegistryt   BaseRegistryN(   t   range(   t
   accumulatec         c  s*   d } x |  D] } | | 7} | Vq Wd S(   u+    Super simpel 'accumulate' implementation. i    N(    (   t   iterablet   totalt   item(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR+      s    
u   load_vi_bindingsu   load_vi_search_bindingsu   load_vi_system_bindingsu&   load_extra_vi_page_navigation_bindingsu   asciiu
   0123456789t   TextObjectTypec           B  s    e  Z d  Z d Z d Z d Z RS(   u	   EXCLUSIVEu	   INCLUSIVEu   LINEWISEu   BLOCK(   t   __name__t
   __module__t	   EXCLUSIVEt	   INCLUSIVEt   LINEWISEt   BLOCK(    (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR/   1   s   t
   TextObjectc           B  sS   e  Z d  Z d e j d „ Z e d „  ƒ Z d „  Z d „  Z	 d „  Z
 d „  Z RS(   u‰   
    Return struct for functions wrapped in ``text_object``.
    Both `start` and `end` are relative to the current cursor position.
    i    c         C  s   | |  _  | |  _ | |  _ d  S(   N(   t   startt   endt   type(   t   selfR7   R8   R9   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   __init__=   s    		c         C  s=   |  j  t j k r t j S|  j  t j k r2 t j St j Sd  S(   N(   R9   R/   R4   R   t   LINESR5   t
   CHARACTERS(   R:   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   selection_typeB   s
    c         C  s6   |  j  |  j k  r" |  j  |  j f S|  j |  j  f Sd S(   uA   
        Return a (start, end) tuple where start <= end.
        N(   R7   R8   (   R:   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   sortedK   s    c         C  s  |  j  ƒ  \ } } | } |  j t j k rW | j | | j ƒ d d k rW | d 8} n  |  j t j k rv | d 7} n  |  j t j k r| j | | j ƒ \ } } | j | d ƒ | j } | j | | j ƒ \ } } | j | t	 | j
 | ƒ ƒ | j } n  | | f S(   u¾   
        Return a (start, end) tuple with start <= end that indicates the range
        operators should operate on.
        `buffer` is used to get start and end of line positions.
        i   i    (   R?   R9   R/   R2   t   translate_index_to_positiont   cursor_positionR3   R4   t   translate_row_col_to_indext   lent   lines(   R:   t   documentR7   R8   t   doct   rowt   col(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   operator_rangeT   s     )c         C  sl   |  j  | j ƒ \ } } | | j 7} | | j 7} | j j | ƒ \ } } | j j | ƒ \ } } | | f S(   u7   
        Return a (start_line, end_line) pair.
        (   RI   RE   RA   R@   (   R:   t   buffert   from_t   tot   _(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   get_line_numbersl   s    c         C  s   |  j  | j ƒ \ } } | | j 7} | | j 7} | d 8} t | j | t d | d |  j ƒ ƒ } | j ƒ  \ } } | | f S(   uA   
        Turn text object into `ClipboardData` instance.
        i   t   original_cursor_positionR9   (   RI   RE   RA   R   t   textR   R>   t   cut_selection(   R:   RJ   RK   RL   RE   t   new_documentt   clipboard_data(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   cut{   s    
(   R0   R1   t   __doc__R/   R2   R;   t   propertyR>   R?   RI   RN   RT   (    (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR6   8   s   					c           sL   t  ˆ t ƒ s t ‚ t ƒ  ‰ t ƒ  ‰  t ƒ  ‰ ‡  ‡ ‡ ‡ f d †  } | S(   uY   
    Create a decorator that can be used to register Vi text object implementations.
    c       	     sƒ   | j  d t ƒ  ƒ ‰ | j  d t ƒ ‰ | j  d t ƒ ‰ | j  d t ƒ ‰  | sX t ‚ ‡  ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ f	 d †  } | S(   u‚  
        Register a text object function.

        Usage::

            @text_object('w', filter=..., no_move_handler=False)
            def handler(event):
                # Return a text object for this key.
                return TextObject(...)

        :param no_move_handler: Disable the move handler in navigation mode.
            (It's still active in selection mode.)
        u   filteru   no_move_handleru   no_selection_handleru   eagerc           s¼   t  ˆ  ƒ s t ‚ ˆ j d ˆ ˆ @d ˆ ˆ Œ ‡  f d †  ƒ } ˆ s| ˆ j d ˆ ˆ @ˆ @d ˆ ˆ Œ ‡  f d †  ƒ } n  ˆ s¸ ˆ j d ˆ ˆ @ˆ	 @d ˆ ˆ Œ ‡  f d †  ƒ } n  ˆ  S(   Nt   filtert   eagerc           s   |  j  j } | j p d |  j p$ d |  _ ˆ  |  ƒ } | d  k	 rk t | t ƒ sX t ‚ | j	 |  | ƒ n  d  |  j  j _	 d  |  j  j _ d  S(   Ni   (
   t   clit   vi_statet   operator_argt   argt   _argt   Nonet
   isinstanceR6   t   AssertionErrort   operator_func(   t   eventRZ   t   text_obj(   t   text_object_func(    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ­   s    c           s%   ˆ  |  ƒ } |  j  j | j 7_ d S(   u#    Move handler for navigation mode. N(   t   current_bufferRA   R7   (   Rb   t   text_object(   Rd   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Á   s    c           s´   ˆ  |  ƒ } |  j  } | j r› | j | j ƒ \ } } | | j 7} | | j 7} | | j _ | | _ | j t j	 k r‰ t
 j | j _ q° t
 j | j _ n |  j  j | j 7_ d S(   u"    Move handler for selection mode. N(   Re   R8   RI   RE   RA   t   selection_stateRO   R9   R/   R4   R   R<   R=   R7   (   Rb   Rf   t   buffR7   R8   (   Rd   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   É   s    			(   t   callableR`   t   add_binding(   Rd   RM   (	   RX   RW   t   keyst   navigation_modet   no_move_handlert   no_selection_handlert   operator_givent   registryt   selection_mode(   Rd   sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt	   decoratorª   s    .66(   t   popR   t   FalseR`   (   Rk   t   kwRr   (   Rl   Ro   Rp   Rq   (   RX   RW   Rk   Rm   Rn   sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   text_object_decorator–   s    ';(   R_   R)   R`   R   R   R   (   Rp   Rv   (    (   Rl   Ro   Rp   Rq   sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   create_text_object_decoratorŒ   s    			Pc           sL   t  ˆ t ƒ s t ‚ t ƒ  ‰ t ƒ  ‰  t ƒ  ‰ ‡  ‡ ‡ ‡ f d †  } | S(   uK   
    Create a decorator that can be used for registering Vi operators.
    c            sY   | j  d t ƒ  ƒ ‰ | j  d t ƒ ‰  | s4 t ‚ ‡  ‡ ‡ ‡ ‡ ‡ ‡ f d †  } | S(   uÇ   
        Register a Vi operator.

        Usage::

            @operator('d', filter=...)
            def handler(cli, text_object):
                # Do something with the text object here.
        u   filteru   eagerc           sj   ˆ j  d ˆ ˆ @ˆ @d ˆ ˆ Œ ‡  f d †  ƒ } ˆ j  d ˆ ˆ @ˆ @d ˆ ˆ Œ ‡  f d †  ƒ } ˆ  S(   NRW   RX   c           s%   ˆ  |  j  j _ |  j |  j  j _ d S(   uE   
                Handle operator in navigation mode.
                N(   RY   RZ   Ra   R\   R[   (   Rb   (   Ra   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    c           s   |  j  } | j } | j t j k r0 t j } n' | j t j k rN t j } n	 t j } t	 | j
 | j d | ƒ} ˆ  |  | ƒ d | _ d S(   uD   
                Handle operator in selection mode.
                R9   N(   Re   Rg   R9   R   R<   R/   R4   R5   R3   R6   RO   RA   R^   (   Rb   Rh   Rg   t   text_obj_typeRf   (   Ra   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    				(   Rj   (   Ra   RM   (   RX   RW   Rk   Rl   Ro   Rp   Rq   (   Ra   sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRr     s    33(   Rs   R   Rt   R`   (   Rk   Ru   Rr   (   Rl   Ro   Rp   Rq   (   RX   RW   Rk   sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   operator_decoratoró   s
    
!'(   R_   R)   R`   R   R   R   (   Rp   Ry   (    (   Rl   Ro   Rp   Rq   sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   create_operator_decoratoré   s    			6c      	     sJ  t  t ƒ  t ƒ  ƒ } | j } ˆ  dØ k r6 d „  ‰  n  t ƒ  } t ƒ  } t ƒ  } t ƒ  } t	 ƒ  } t
 ƒ  } t ƒ  }	 dÙ t ƒ  d „  f dÚ t ƒ  d „  f dÛ t ƒ  d „  f dÜ t ƒ  d
 „  f dÝ t d „  ƒ d „  f g }
 | t j d | ƒt d ƒ ƒ | t j ƒ d „  ƒ } | d d | ƒd „  ƒ } | d d | ƒd „  ƒ } | t j d | ƒ| t j d | ƒd „  ƒ ƒ } | d d | ƒd „  ƒ } | t j d | ƒ| t j d | ƒd „  ƒ ƒ } | d d | ƒd „  ƒ } | t j d | ƒ| t j d | ƒd „  ƒ ƒ } | t j d | ƒd „  ƒ } | t j d | ƒd „  ƒ } | t j d | ƒd „  ƒ } | t j d | ƒd „  ƒ } | t j d | ƒd „  ƒ } | t j d | ƒd „  ƒ } | d d | t ƒ  @ƒd  „  ƒ } | d! d | t ƒ  @ƒd" „  ƒ } | d# d | t ƒ  @ƒd$ „  ƒ } | d% d% d | t ƒ  @ƒ| d& d | t ƒ  @ƒd' „  ƒ ƒ } | d( d | ƒd) „  ƒ } | d* d* d | ƒd+ „  ƒ } | d, d | ƒd- „  ƒ } | d. d | t ƒ  @ƒd/ „  ƒ } | d0 d | t ƒ  @ƒd1 „  ƒ } t d2 „  ƒ } | d0 d | t ƒ  @ƒt d3 „ ƒ ‰ | d! d | t ƒ  @ƒ‡ f d4 †  ƒ } | d5 d | t ƒ  @ƒd6 „  ƒ } | d d5 d | t ƒ  @ƒd7 „  ƒ } | d5 d | t ƒ  @ƒd8 „  ƒ } | d d5 d | t ƒ  @ƒd9 „  ƒ } | d: d | ƒd; „  ƒ } | d< d | ƒd= „  ƒ } | d> t j d: d | ƒd? „  ƒ } | d> t j d< d | ƒd@ „  ƒ } | dA t j d | ƒdB „  ƒ } | dC d | ƒdD „  ƒ } | dE d | t ƒ  @ƒdF „  ƒ } | d d | dG dH „  ƒdI „  ƒ } | dJ d | ƒdK „  ƒ } | t j d | ƒdL „  ƒ } | dJ d | ƒdM „  ƒ } | dN d | ƒdO „  ƒ } | dN d | ƒdP „  ƒ } | t j d | ƒdQ „  ƒ } | d dR d | ƒ| d dS d | ƒdT „  ƒ ƒ } | d, d | ƒdU „  ƒ } | dV d | ƒdW „  ƒ } | dX dX d | ƒ| dY d | ƒdZ „  ƒ ƒ } | d[ d | ƒd\ „  ƒ } | d] d | ƒd^ „  ƒ } | d_ d_ d | ƒd` „  ƒ } | da da d | ƒdb „  ƒ } | dc d | t ƒ  @ƒdd „  ƒ } | de d | t ƒ  @ƒdf „  ƒ } | d	 d | ƒdg „  ƒ } | d d d d | t ƒ  @ƒdh „  ƒ } | d d d d | t ƒ  @ƒdi „  ƒ } | d d	 d	 d | t ƒ  @ƒdj „  ƒ } | dk d | ƒ‡  f dl †  ƒ } | dm d | ƒ‡  f dn †  ƒ } | do d | ƒdp „  ƒ } | dq d | ƒdr „  ƒ } t | ƒ ‰ t  | ƒ ‰ ˆ t j d | ƒds „  ƒ } t ‡ f dt † } | t t ƒ | t t! ƒ | t! t ƒ | t! t! ƒ ‡ f du †  } x' |
 D] \ } } } | | | | Œ q˜	Wˆ dX ƒ dv „  ƒ } ˆ d> t j dX ƒ dw „  ƒ } ˆ d_ ƒ dx „  ƒ } ˆ da ƒ dy „  ƒ } ˆ d dz ƒ d{ „  ƒ } ˆ d| ƒ d} „  ƒ } ˆ d~ ƒ d „  ƒ } ˆ d€ ƒ d „  ƒ } ˆ dR ƒ d‚ „  ƒ } ˆ dS ƒ dƒ „  ƒ } ˆ d„ ƒ d… „  ƒ } ˆ d† ƒ d‡ „  ƒ } ˆ d. dR dˆ t! ƒd‰ „  ƒ } ˆ d dR dˆ t! ƒdŠ „  ƒ } ˆ d. dS dˆ t! ƒd‹ „  ƒ } ˆ d dS dˆ t! ƒdŒ „  ƒ } ˆ d d: dˆ t! ƒd „  ƒ } ˆ dŽ ƒ d „  ƒ } ˆ d ƒ d‘ „  ƒ } dØ ‡ f d’ † } xv t t! f D]h } x9 dÞ dß dà dá dâ dã dä g D] \ } } | | | | ƒ qÄW| do dq | d| ƒ | d— d˜ | d~ ƒ q¢Wˆ d— ƒ d™ „  ƒ } ˆ d˜ ƒ dš „  ƒ } ˆ d› t j ƒ dœ „  ƒ } ˆ d t j ƒ dž „  ƒ } ˆ dŸ t j ƒ d  „  ƒ } ˆ d¡ t j ƒ d¢ „  ƒ } ‡ f d£ †  } | t! ƒ | t ƒ ˆ d¤ ƒ ˆ t j" ƒ d¥ „  ƒ ƒ } ˆ d dˆ t! d¦ t! ƒd§ „  ƒ } ˆ d dˆ t! d¦ t! ƒd¨ „  ƒ } ˆ d© ƒ ˆ dª ƒ ˆ t j# ƒ d« „  ƒ ƒ ƒ } ˆ d¬ ƒ d­ „  ƒ } ˆ d® ƒ d¯ „  ƒ } ˆ d° ƒ d± „  ƒ } ˆ d² dˆ t! ƒ‡  f d³ †  ƒ } | d² d | ƒ‡  f d´ †  ƒ } ˆ dµ dˆ t! ƒ‡  f d¶ †  ƒ } | dµ d | ƒ‡  f d· †  ƒ } | d¸ d[ d | | Bƒ| d¸ dŸ d | | Bƒ| d¸ t j d | | Bƒd¹ „  ƒ ƒ ƒ } | d¸ d] d | | Bƒ| d¸ d| d | | Bƒdº „  ƒ ƒ } | d¸ d¸ d | | Bƒd» „  ƒ } ˆ d¼ ƒ d½ „  ƒ } ˆ d¾ ƒ d¿ „  ƒ } ˆ d d ƒ dÀ „  ƒ } ˆ d dÁ ƒ dÂ „  ƒ } ˆ d d„ ƒ dÃ „  ƒ } ˆ d d† ƒ dÄ „  ƒ } ˆ d dÅ ƒ dÆ „  ƒ } ˆ dÇ ƒ dÈ „  ƒ } | dÇ d t$ ƒ  ƒdÉ „  ƒ } x1 dÊ D]) } | | d | | B| BƒdË „  ƒ } q°W| d d | | B| Bt$ ƒ  @ƒdÌ „  ƒ } | t j d | ƒdÍ „  ƒ } | t j d | dG dÎ „  ƒdÏ „  ƒ } | t j d | ƒdÐ „  ƒ } | t j% d | ƒdÑ „  ƒ } | t j& t j' d | ƒdÒ „  ƒ } | t j& t j( d | ƒdÓ „  ƒ } | t j) d | | BƒdÔ „  ƒ } t dÕ „  ƒ } | t j d |	 | @ƒdÖ „  ƒ } | t j d |	 | @ƒd× „  ƒ } | S(å   u  
    Vi extensions.

    # Overview of Readline Vi commands:
    # http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.pdf

     :param get_search_state: None or a callable that takes a
        CommandLineInterface and returns a SearchState.
    c         S  s   |  j  S(   N(   t   search_state(   RY   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   get_search_stateD  s    u   gu   ?c         S  s   t  j |  d ƒ S(   Nu   rot_13(   t   codecst   encode(   t   string(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   <lambda>R  s    u   uc         S  s
   |  j  ƒ  S(   N(   t   lower(   R   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   U  s    u   Uc         S  s
   |  j  ƒ  S(   N(   t   upper(   R   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   X  s    u   ~c         S  s
   |  j  ƒ  S(   N(   t   swapcase(   R   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   [  s    c         S  s
   |  j  j S(   N(   RZ   t   tilde_operator(   RY   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   \  s    c         S  s
   |  j  ƒ  S(   N(   Rƒ   (   R   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   \  s    RW   u   quoted-insertc         S  s{   |  j  } |  j j } | j t j t j f k rK | j | j j	 ƒ  7_ n  | j
 t j ƒ t | j ƒ rw | j ƒ  n  d S(   u4   
        Escape goes to vi navigation mode.
        N(   Re   RY   RZ   t
   input_modeR   t   INSERTt   REPLACERA   RE   t   get_cursor_left_positiont   resett
   NAVIGATIONt   boolRg   t   exit_selection(   Rb   RJ   RZ   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   b  s    	u   kc         S  s   |  j  j d |  j ƒ d S(   u-   
        Arrow up in selection mode.
        t   countN(   Re   t	   cursor_upR\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   r  s    u   jc         S  s   |  j  j d |  j ƒ d S(   u/   
        Arrow down in selection mode.
        R   N(   Re   t   cursor_downR\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   y  s    c         S  s   |  j  j d |  j ƒ d S(   uA   
        Arrow up and ControlP in navigation mode go up.
        R   N(   Re   t   auto_upR\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   €  s    c         S  s    |  j  j d |  j d t ƒ d S(   ud   
        Go up, but if we enter a new history entry, move to the start of the
        line.
        R   t&   go_to_start_of_line_if_history_changesN(   Re   R   R\   t   True(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ˆ  s    c         S  s   |  j  j d |  j ƒ d S(   u>   
        Arrow down and Control-N in navigation mode.
        R   N(   Re   t	   auto_downR\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ‘  s    c         S  s    |  j  j d |  j d t ƒ d S(   u\   
        Go down, but if we enter a new history entry, go to the start of the line.
        R   R‘   N(   Re   R“   R\   R’   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ™  s    c         S  s+   |  j  j |  j  j j d |  j ƒ 7_ d S(   u2   
        In navigation-mode, move cursor.
        R   N(   Re   RA   RE   Rˆ   R\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ¡  s    
c         S  s6   |  j  } | j r | j ƒ  n |  j j d t ƒ d  S(   Nt   select_first(   Re   t   complete_statet   complete_nextRY   t   start_completionR’   (   Rb   t   b(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ª  s    		c         S  s6   |  j  } | j r | j ƒ  n |  j j d t ƒ d S(   u4   
        Control-P: To previous completion.
        t   select_lastN(   Re   R•   t   complete_previousRY   R—   R’   (   Rb   R˜   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ³  s    		c         S  s   d |  j _ d S(   u,   
        Accept current completion.
        N(   R^   Re   R•   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ¿  s    c         S  s   |  j  j ƒ  d S(   uF   
        Cancel completion. Go back to originally typed text.
        N(   Re   t   cancel_completion(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Æ  s    c         S  s2   |  j  } | j j r. | j j |  j | ƒ n  d S(   uR   
        In navigation mode, pressing enter will always return the input.
        N(   Re   t   accept_actiont   is_returnablet   validate_and_handleRY   (   Rb   R˜   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Í  s    	c         S  s   t  j |  j j _ d S(   u    Presing the Insert key. N(   R   R†   RY   RZ   R…   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Û  s    u   ac         S  s4   |  j  j |  j  j j ƒ  7_ t j |  j j _ d  S(   N(	   Re   RA   RE   t   get_cursor_right_positionR   R†   RY   RZ   R…   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   à  s    u   Ac         S  s4   |  j  j |  j  j j ƒ  7_ t j |  j j _ d  S(   N(	   Re   RA   RE   t   get_end_of_line_positionR   R†   RY   RZ   R…   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ç  s    u   Cc         S  sM   |  j  } | j d | j j ƒ  ƒ } |  j j j | ƒ t j |  j j	 _
 d S(   uc   
        # Change to end of line.
        # Same as 'c$' (which is implemented elsewhere.)
        R   N(   Re   t   deleteRE   R    RY   t	   clipboardt   set_textR   R†   RZ   R…   (   Rb   RJ   t   deleted(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ì  s    	u   cu   Sc         S  s   |  j  } t | j j t j ƒ } |  j j j | ƒ | j	 | j j
 d t ƒ 7_	 | j d | j j ƒ  ƒ t j |  j j _ d S(   u%   
        Change current line
        t   after_whitespaceR   N(   Re   R   RE   t   current_lineR   R<   RY   R¢   t   set_dataRA   t   get_start_of_line_positionR’   R¡   R    R   R†   RZ   R…   (   Rb   RJ   t   data(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ø  s    	u   Dc         S  s;   |  j  } | j d | j j ƒ  ƒ } |  j j j | ƒ d  S(   NR   (   Re   R¡   RE   R    RY   R¢   R£   (   Rb   RJ   R¤   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   	  s    	u   dc         S  sò   |  j  } | j j } d j | | j j  ƒ } d j | | j j | j j |  j !ƒ } d j | | j j |  j ƒ } | r | r | d } n  t d | | d t | ƒ t | ƒ t | j d ƒ ƒ ƒ | _ |  j	 j
 j t | t j ƒ ƒ d S(   u<   
        Delete line. (Or the following 'n' lines.)
        u   
RP   RA   u    N(   Re   RE   RD   t   joint   cursor_position_rowR\   R   RC   t   lstripRY   R¢   R§   R   R   R<   (   Rb   RJ   RD   t   beforeR¤   t   after(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    	 
/u   xc         S  s&   |  j  j ƒ  } |  j j j | ƒ d S(   uB   
        Cut selection.
        ('x' is not an operator.)
        N(   Re   RQ   RY   R¢   R§   (   Rb   RS   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   +  s    u   ic         S  s   t  j |  j j _ d  S(   N(   R   R†   RY   RZ   R…   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   4  s    u   Ic         S  s:   t  j |  j j _ |  j j |  j j j d t	 ƒ 7_ d  S(   NR¥   (
   R   R†   RY   RZ   R…   Re   RA   RE   R¨   R’   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   8  s    
c         S  s%   |  j  } | j o$ | j j t j k S(   N(   Re   Rg   R9   R   R5   (   RY   Rh   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   in_block_selection>  s    	c         S  sª   |  j  } g  } | r! d „  } n	 d „  } xT t | j j ƒ  ƒ D]= \ } } | j | | ƒ ƒ | d k r@ | | ƒ | _ q@ q@ W| | _ t j |  j	 j
 _ | j ƒ  d S(   u!    Insert in block selection mode. c         S  s   |  d d S(   Ni   (    (   t   from_to(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   get_posL  s    c         S  s   |  d S(   Ni    (    (   R°   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR±   O  s    i    N(   Re   t	   enumerateRE   t   selection_rangest   appendRA   t   multiple_cursor_positionsR   t   INSERT_MULTIPLERY   RZ   R…   RŒ   (   Rb   R®   Rh   t	   positionsR±   t   iR°   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   go_to_block_selectionC  s    		"	c           s   ˆ  |  d t  ƒd  S(   NR®   (   R’   (   Rb   (   R¹   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ]  s    u   Jc         S  s+   x$ t  |  j ƒ D] } |  j j ƒ  q Wd S(   u    Join lines. N(   R*   R\   Re   t   join_next_line(   Rb   R¸   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   a  s    c         S  s1   x* t  |  j ƒ D] } |  j j d d ƒ q Wd S(   u    Join lines without space. t	   separatoru    N(   R*   R\   Re   Rº   (   Rb   R¸   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   g  s    c         S  s   |  j  j ƒ  d S(   u    Join selected lines. N(   Re   t   join_selected_lines(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   m  s    c         S  s   |  j  j d d ƒ d S(   u$    Join selected lines without space. R»   u    N(   Re   R¼   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   r  s    u   pc         S  s2   |  j  j |  j j j ƒ  d |  j d t j ƒd S(   u   
        Paste after
        R   t
   paste_modeN(   Re   t   paste_clipboard_dataRY   R¢   t   get_dataR\   R   t   VI_AFTER(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   w  s    		u   Pc         S  s2   |  j  j |  j j j ƒ  d |  j d t j ƒd S(   u   
        Paste before
        R   R½   N(   Re   R¾   RY   R¢   R¿   R\   R   t	   VI_BEFORE(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    		u   "c         S  sf   |  j  d j } | t k rb |  j j j j | ƒ } | rb |  j j | d |  j	 d t
 j ƒqb n  d S(   u    Paste from named register. i   R   R½   N(   t   key_sequenceR©   t   vi_register_namesRY   RZ   t   named_registerst   getRe   R¾   R\   R   RÀ   (   Rb   t   cR©   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ‹  s    	c         S  sf   |  j  d j } | t k rb |  j j j j | ƒ } | rb |  j j | d |  j	 d t
 j ƒqb n  d S(   u%    Paste (before) from named register. i   R   R½   N(   RÂ   R©   RÃ   RY   RZ   RÄ   RÅ   Re   R¾   R\   R   RÁ   (   Rb   RÆ   R©   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   •  s    	u   rc         S  s6   |  j  j |  j |  j d t ƒ|  j  j d 8_ d S(   u7   
        Replace single character under cursor
        t	   overwritei   N(   Re   t   insert_textR©   R\   R’   RA   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Ÿ  s     u   Rc         S  s   t  j |  j j _ d S(   u'   
        Go to 'replace'-mode.
        N(   R   R‡   RY   RZ   R…   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   §  s    u   sc         S  sA   |  j  j d |  j ƒ } |  j j j | ƒ t j |  j j _	 d S(   u_   
        Substitute with new text
        (Delete character(s) and go to insert mode.)
        R   N(
   Re   R¡   R\   RY   R¢   R£   R   R†   RZ   R…   (   Rb   RP   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ®  s    t   save_beforec         S  s   t  S(   N(   Rt   (   t   e(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   ¸  s    c         S  s+   x$ t  |  j ƒ D] } |  j j ƒ  q Wd  S(   N(   R*   R\   Re   t   undo(   Rb   R¸   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ¸  s    u   Vc         S  s   |  j  j d t j ƒ d S(   u(   
        Start lines selection.
        R>   N(   Re   t   start_selectionR   R<   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ½  s    c         S  s   |  j  j d t j ƒ d S(   u    Enter block selection mode. R>   N(   Re   RÌ   R   R5   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Ä  s    c         S  s>   |  j  j } | j t j k r- t j | _ n |  j  j ƒ  d S(   un   
        Exit line selection mode, or go from non line selection mode to line
        selection mode.
        N(   Re   Rg   R9   R   R<   RŒ   (   Rb   Rg   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   É  s    u   vc         S  s   |  j  j d t j ƒ d S(   u!    Enter character selection mode. R>   N(   Re   RÌ   R   R=   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Ö  s    c         S  s>   |  j  j } | j t j k r- t j | _ n |  j  j ƒ  d S(   u}   
        Exit character selection mode, or go from non-character-selection mode
        to character selection mode.
        N(   Re   Rg   R9   R   R=   RŒ   (   Rb   Rg   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Û  s    c         S  s>   |  j  j } | j t j k r- t j | _ n |  j  j ƒ  d S(   uq   
        Exit block selection mode, or go from non block selection mode to block
        selection mode.
        N(   Re   Rg   R9   R   R5   RŒ   (   Rb   Rg   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   è  s    u   wu   Wc         S  s=   |  j  } | j r9 | j j t j k r9 t j | j _ n  d S(   uP   
        Switch from visual linewise mode to visual characterwise mode.
        N(   Re   Rg   R9   R   R<   R=   (   Rb   RJ   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ö  s    	c         S  s/   |  j  j d |  j ƒ } |  j j j | ƒ d S(   u#   
        Delete character.
        R   N(   Re   R¡   R\   RY   R¢   R£   (   Rb   RP   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    u   Xc         S  s&   |  j  j ƒ  } |  j j j | ƒ d  S(   N(   Re   t   delete_before_cursorRY   R¢   R£   (   Rb   RP   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   	  s    u   yu   Yc         S  sB   d j  |  j j j |  j  ƒ } |  j j j t | t	 j
 ƒ ƒ d S(   u&   
        Yank the whole line.
        u   
N(   Rª   Re   RE   t   lines_from_currentR\   RY   R¢   R§   R   R   R<   (   Rb   RP   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    u   +c         S  sL   |  j  } | j | j j d |  j ƒ 7_ | j | j j d t ƒ 7_ d S(   u;   
        Move to first non whitespace of next line
        R   R¥   N(   Re   RA   RE   t   get_cursor_down_positionR\   R¨   R’   (   Rb   RJ   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    	!u   -c         S  sL   |  j  } | j | j j d |  j ƒ 7_ | j | j j d t ƒ 7_ d S(   u?   
        Move to first non whitespace of previous line
        R   R¥   N(   Re   RA   RE   t   get_cursor_up_positionR\   R¨   R’   (   Rb   RJ   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM      s    	!u   >c         S  s0   |  j  } | j j } t | | | |  j ƒ d S(   u   
        Indent lines.
        N(   Re   RE   R«   R   R\   (   Rb   RJ   t   current_row(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   )  s    	u   <c         S  s-   |  j  j j } t |  j  | | |  j ƒ d S(   u!   
        Unindent lines.
        N(   Re   RE   R«   R   R\   (   Rb   RÑ   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   2  s    u   Oc         S  s0   |  j  j d |  j j ƒ t j |  j j _ d S(   u:   
        Open line above and enter insertion mode
        t   copy_marginN(   Re   t   insert_line_aboveRY   t   in_paste_modeR   R†   RZ   R…   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   :  s    u   oc         S  s0   |  j  j d |  j j ƒ t j |  j j _ d S(   u:   
        Open line below and enter insertion mode
        RÒ   N(   Re   t   insert_line_belowRY   RÔ   R   R†   RZ   R…   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   C  s    c         S  sM   |  j  } | j j } | d k	 rI | d k rI | j | j ƒ  d t ƒn  d S(   uL   
        Reverse case of current character and move cursor forward.
        u   
RÇ   N(   Re   RE   t   current_charR^   RÈ   Rƒ   R’   (   Rb   RJ   RÆ   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   L  s    	c         S  s   |  j  } | j d „  ƒ d S(   u    Lowercase current line. c         S  s
   |  j  ƒ  S(   N(   R   (   t   s(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   [  s    N(   Re   t   transform_current_line(   Rb   Rh   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   W  s    	c         S  s   |  j  } | j d „  ƒ d S(   u    Uppercase current line. c         S  s
   |  j  ƒ  S(   N(   R‚   (   R×   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   a  s    N(   Re   RØ   (   Rb   Rh   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ]  s    	c         S  s   |  j  } | j d „  ƒ d S(   u     Swap case of the current line. c         S  s
   |  j  ƒ  S(   N(   Rƒ   (   R×   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   g  s    N(   Re   RØ   (   Rb   Rh   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   c  s    	u   #c           sY   |  j  j } ˆ  |  j  ƒ } | j j ƒ  | _ t j | _ | j | d |  j	 d t
 ƒd S(   u8   
        Go to previous occurence of this word.
        R   t   include_current_positionN(   RY   Re   RE   t   get_word_under_cursorRP   R   t   BACKWARDt	   directiont   apply_searchR\   Rt   (   Rb   R˜   R{   (   R|   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   i  s    u   *c           sY   |  j  j } ˆ  |  j  ƒ } | j j ƒ  | _ t j | _ | j | d |  j	 d t
 ƒd S(   u4   
        Go to next occurence of this word.
        R   RÙ   N(   RY   Re   RE   RÚ   RP   R   t   FORWARDRÜ   RÝ   R\   Rt   (   Rb   R˜   R{   (   R|   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   w  s    u   (c         S  s   d  S(   N(    (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   …  s    u   )c         S  s   d  S(   N(    (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ‹  s    c         S  s   |  j  j j ƒ  d S(   uF   
        Unknown key binding while waiting for a text object.
        N(   RY   t   outputt   bell(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ”  s    c           sU   ˆ r d t  j d ˆ  f } n
 d ˆ  } ˆ d t ƒ  | Œ ‡  ‡ f d †  ƒ } d S(   uð   
        Delete and change operators.

        :param delete_only: Create an operator that deletes, but doesn't go to insert mode.
        :param with_register: Copy the deleted text to this named register instead of the clipboard.
        u   "u   cdRW   c           sµ   d  } |  j } | r6 | j | ƒ \ } } | | _ n  | r– | j r– ˆ r€ |  j d j } | t k r“ | |  j j	 j
 | <q“ q– |  j j j | ƒ n  ˆ  s± t j |  j j	 _ n  d  S(   Ni   (   R^   Re   RT   RE   RP   RÂ   R©   RÃ   RY   RZ   RÄ   R¢   R§   R   R†   R…   (   Rb   Rf   RS   Rh   RR   t   reg_name(   t   delete_onlyt   with_register(    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   delete_or_change_operator«  s    	N(   R   t   AnyR   (   Râ   Rã   t   handler_keysRä   (   t   operator(   Râ   Rã   sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt"   create_delete_and_change_operatorsŸ  s    
c           s-   ˆ d |  t  ƒ  @| Œ ‡  f d †  ƒ } d  S(   NRW   c           sp   |  j  } | j | j ƒ \ } } | | k  rl | j | j | | j | ˆ  ƒ | j | j pd | j 7_ n  d S(   uX   
            Apply transformation (uppercase, lowercase, rot13, swap case).
            N(   Re   RI   RE   t   transform_regionRA   R8   R7   (   Rb   Rf   Rh   R7   R8   (   t   transform_func(    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Ç  s    	

(   R   (   RW   Rê   t   aRM   (   Rç   (   Rê   sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   create_transform_handlerÆ  s    c         S  s;   | j  |  j ƒ \ } } | j r7 |  j j j | ƒ n  d S(   u-   
        Yank operator. (Copy text.)
        N(   RT   Re   RP   RY   R¢   R§   (   Rb   Rf   RM   RS   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   yank_handlerÜ  s    	c         S  sN   |  j  d j } | t k rJ | j |  j ƒ \ } } | |  j j j | <n  d S(   u#    Yank selection to named register. i   N(   RÂ   R©   RÃ   RT   Re   RY   RZ   RÄ   (   Rb   Rf   RÆ   RM   RS   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   å  s    c         S  s?   |  j  } | j | ƒ \ } } t | | | d d |  j ƒd S(   u   
        Indent.
        i   R   N(   Re   RN   R   R\   (   Rb   Rf   Rh   RK   RL   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   í  s    	c         S  s?   |  j  } | j | ƒ \ } } t | | | d d |  j ƒd S(   u   
        Unindent.
        i   R   N(   Re   RN   R   R\   (   Rb   Rf   Rh   RK   RL   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ö  s    	u   qc         S  s2   |  j  } | j | ƒ \ } } t | | | ƒ d S(   u   
        Reshape text.
        N(   Re   RN   R   (   Rb   Rf   Rh   RK   RL   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ÿ  s    	u   bc         S  s%   t  |  j j j d |  j ƒ p! d ƒ S(   u    Move one word or token left. R   i    (   R6   Re   RE   t   find_start_of_previous_wordR\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    u   Bc         S  s+   t  |  j j j d |  j d t ƒ p' d ƒ S(   u    Move one non-blank word left R   t   WORDi    (   R6   Re   RE   Rî   R\   R’   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    u   $c         S  s   t  |  j j j ƒ  ƒ S(   u<    'c$', 'd$' and '$':  Delete/change/move until end of line. (   R6   Re   RE   R    (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt
   key_dollar  s    c         S  s1   t  |  j j j d |  j ƒ p- |  j j j ƒ  ƒ S(   u@    'word' forward. 'cw', 'dw', 'w': Delete/change/move one word.  R   (   R6   Re   RE   t   find_next_word_beginningR\   t   get_end_of_document_position(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    c         S  s7   t  |  j j j d |  j d t ƒ p3 |  j j j ƒ  ƒ S(   u@    'WORD' forward. 'cW', 'dW', 'W': Delete/change/move one WORD.  R   Rï   (   R6   Re   RE   Rñ   R\   R’   Rò   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   !  s    $u   ec         S  s>   |  j  j j d |  j ƒ } t | r. | d n d d t j ƒS(   u     End of 'word': 'ce', 'de', 'e' R   i   i    R9   (   Re   RE   t   find_next_word_endingR\   R6   R/   R3   (   Rb   R8   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   '  s    u   Ec         S  sD   |  j  j j d |  j d t ƒ } t | r4 | d n d d t j ƒS(   u     End of 'WORD': 'cE', 'dE', 'E' R   Rï   i   i    R9   (   Re   RE   Ró   R\   R’   R6   R/   R3   (   Rb   R8   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   -  s    !Rm   c         S  s%   |  j  j j ƒ  \ } } t | | ƒ S(   u    Inner 'word': ciw and diw (   Re   RE   t   find_boundaries_of_current_wordR6   (   Rb   R7   R8   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   3  s    c         S  s+   |  j  j j d t ƒ \ } } t | | ƒ S(   u    A 'word': caw and daw t   include_trailing_whitespace(   Re   RE   Rô   R’   R6   (   Rb   R7   R8   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   9  s    c         S  s+   |  j  j j d t ƒ \ } } t | | ƒ S(   u    Inner 'WORD': ciW and diW Rï   (   Re   RE   Rô   R’   R6   (   Rb   R7   R8   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ?  s    c         S  s1   |  j  j j d t d t ƒ \ } } t | | ƒ S(   u    A 'WORD': caw and daw Rï   Rõ   (   Re   RE   Rô   R’   R6   (   Rb   R7   R8   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   E  s    $c         S  s:   |  j  j j ƒ  } |  j  j j d |  j ƒ } t | | ƒ S(   u!   
        Auto paragraph.
        R   (   Re   RE   t   start_of_paragrapht   end_of_paragraphR\   R6   (   Rb   R7   R8   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   K  s    u   ^c         S  s   t  |  j j j d t ƒ ƒ S(   u;    'c^', 'd^' and '^': Soft start of line, after whitespace. R¥   (   R6   Re   RE   R¨   R’   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   key_circumflexT  s    u   0c         S  s   t  |  j j j d t ƒ ƒ S(   u¤   
        'c0', 'd0': Hard start of line, before whitespace.
        (The move '0' key is implemented elsewhere, because a '0' could also change the `arg`.)
        R¥   (   R6   Re   RE   R¨   Rt   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   key_zeroY  s    c           s   ‡  ‡ ‡ f d †  } | d k r^ ˆ d ˆ ˆ d t ƒ| ƒ ˆ d ˆ ˆ  d t ƒ| ƒ n ˆ d ˆ | d t ƒ| ƒ d S(   uÂ   
        Delete/Change string between this start and stop character. But keep these characters.
        This implements all the ci", ci<, ci{, ci(, di", di<, ca", ca<, ... combinations.
        c           sÆ   ˆ ˆ  k rE |  j  j j ˆ d t ƒ} |  j  j j ˆ  d t ƒ} n0 |  j  j j ˆ ˆ  ƒ } |  j  j j ˆ ˆ  ƒ } | d  k	 r¸ | d  k	 r¸ ˆ r™ d n d } t | d | | | ƒ St d ƒ Sd  S(   Nt   in_current_linei    i   (	   Re   RE   t   find_backwardsRt   t   findt   find_enclosing_bracket_leftt   find_enclosing_bracket_rightR^   R6   (   Rb   R7   R8   t   offset(   t   ci_endt   ci_startt   inner(    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   handlerg  s    u   aiRm   N(   R^   R’   (   R  R   R  t   keyR  (   Rf   (   R   R  R  sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   create_ci_ca_handlesa  s
     u   'u   `u   [u   ]u   {u   }c         S  s+   |  j  j j d |  j d t ƒ } t | ƒ S(   ui   
        Move to previous blank-line separated section.
        Implements '{', 'c{', 'd{', 'y{'
        R   R­   (   Re   RE   Rö   R\   R’   R6   (   Rb   t   index(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   †  s    c         S  s+   |  j  j j d |  j d t ƒ } t | ƒ S(   ue   
        Move to next blank-line separated section.
        Implements '}', 'c}', 'd}', 'y}'
        R   R®   (   Re   RE   R÷   R\   R’   R6   (   Rb   R  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    !u   fc         S  si   t  |  j t ƒ |  j j _ |  j j j |  j d t	 d |  j
 ƒ} | r[ t | d t j ƒSt d ƒ Sd S(   u†   
        Go to next occurance of character. Typing 'fx' will move the
        cursor to the next occurance of character. 'x'.
        Rú   R   R9   i    N(   R   R©   Rt   RY   RZ   t   last_character_findRe   RE   Rü   R’   R\   R6   R/   R3   (   Rb   t   match(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ™  s    u   Fc         S  sL   t  |  j t ƒ |  j j _ t |  j j j	 |  j d t d |  j
 ƒpH d ƒ S(   uŽ   
        Go to previous occurance of character. Typing 'Fx' will move the
        cursor to the previous occurance of character. 'x'.
        Rú   R   i    (   R   R©   R’   RY   RZ   R  R6   Re   RE   Rû   R\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   §  s    u   tc         S  sm   t  |  j t ƒ |  j j _ |  j j j |  j d t	 d |  j
 ƒ} | r_ t | d d t j ƒSt d ƒ Sd S(   uP   
        Move right to the next occurance of c, then one char backward.
        Rú   R   i   R9   i    N(   R   R©   Rt   RY   RZ   R  Re   RE   Rü   R’   R\   R6   R/   R3   (   Rb   R  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ±  s    u   Tc         S  s\   t  |  j t ƒ |  j j _ |  j j j |  j d t d |  j	 ƒ} t
 | rU | d n d ƒ S(   uR   
        Move left to the previous occurance of c, then one char forward.
        Rú   R   i   i    (   R   R©   R’   RY   RZ   R  Re   RE   Rû   R\   R6   (   Rb   R  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ¾  s    c           s+   ˆ ˆ  r d n d ƒ ‡  f d †  ƒ } d S(   u.   
        Create ',' and ';' commands.
        u   ,u   ;c           sÍ   d } |  j  j } t j } | j r© | j j } | j j } ˆ  rL | } n  | ry |  j j j	 | d t
 d |  j ƒ} q© |  j j j | d t
 d |  j ƒ} t j } n  | r¿ t | d | ƒSt d ƒ Sd  S(   Ni    Rú   R   R9   (   RY   RZ   R/   R2   R  t	   charactert	   backwardsRe   RE   Rû   R’   R\   Rü   R3   R6   (   Rb   t   posRZ   R9   t   charR
  (   t   reverse(    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Ì  s    		
'$N(    (   R  RM   (   Rf   (   R  sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   repeatÈ  s    u   hc         S  s   t  |  j j j d |  j ƒ ƒ S(   u*    Implements 'ch', 'dh', 'h': Cursor left. R   (   R6   Re   RE   Rˆ   R\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ç  s    Rn   c         S  s(   t  |  j j j d |  j ƒ d t j ƒS(   u,    Implements 'cj', 'dj', 'j', ... Cursor up. R   R9   (   R6   Re   RE   RÏ   R\   R/   R4   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   í  s    c         S  s(   t  |  j j j d |  j ƒ d t j ƒS(   u,    Implements 'ck', 'dk', 'k', ... Cursor up. R   R9   (   R6   Re   RE   RÐ   R\   R/   R4   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ö  s    u   lu    c         S  s   t  |  j j j d |  j ƒ ƒ S(   u<    Implements 'cl', 'dl', 'l', 'c ', 'd ', ' '. Cursor right. R   (   R6   Re   RE   RŸ   R\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ü  s    u   Hc         S  s„   t  |  j |  j j ƒ } |  j } | r^ | j r^ | j j | j j d t ƒ d ƒ | j	 } n t
 | j j ƒ } t | d t j ƒS(   uz   
        Moves to the start of the visible region. (Below the scroll offset.)
        Implements 'cH', 'dH', 'H'.
        t   after_scroll_offseti    R9   (   R   RY   t   current_buffer_nameRe   t   render_infoRE   RB   t   first_visible_lineR’   RA   RC   t   text_before_cursorR6   R/   R4   (   Rb   t   wR˜   R  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    		u   Mc         S  s~   t  |  j |  j j ƒ } |  j } | rX | j rX | j j | j j ƒ  d ƒ | j } n t	 | j j
 ƒ } t | d t j ƒS(   up   
        Moves cursor to the vertical center of the visible region.
        Implements 'cM', 'dM', 'M'.
        i    R9   (   R   RY   R  Re   R  RE   RB   t   center_visible_lineRA   RC   R  R6   R/   R4   (   Rb   R  R˜   R  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    		u   Lc         S  sƒ   t  |  j |  j j ƒ } |  j } | r^ | j r^ | j j | j j d t ƒ d ƒ | j	 } n t
 | j j ƒ } t | d t j ƒS(   uT   
        Moves to the end of the visible region. (Above the scroll offset.)
        t   before_scroll_offseti    R9   (   R   RY   R  Re   R  RE   RB   t   last_visible_lineR’   RA   RC   t   text_after_cursorR6   R/   R4   (   Rb   R  R˜   R  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   -  s    		u   nc           sA   |  j  } | j ˆ  |  j ƒ d t d |  j ƒ} t | | j ƒ S(   u    Search next. RÙ   R   (   Re   t   get_search_positionRY   Rt   R\   R6   RA   (   Rb   Rh   RA   (   R|   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   A  s
    	c           s,   |  j  j ˆ  |  j ƒ d t d |  j ƒd S(   uB    Search next in navigation mode. (This goes through the history.) RÙ   R   N(   Re   RÝ   RY   Rt   R\   (   Rb   (   R|   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   J  s    	u   Nc           sB   |  j  } | j ˆ  |  j ƒ d t d |  j ƒ} t | | j ƒ S(   u    Search previous. RÙ   R   (   Re   R  RY   Rt   R\   R6   RA   (   Rb   Rh   RA   (   R|   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Q  s
    	c           s-   |  j  j ˆ  |  j ƒ d t d |  j ƒd S(   uF    Search previous in navigation mode. (This goes through the history.) RÙ   R   N(   Re   RÝ   RY   Rt   R\   (   Rb   (   R|   (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Z  s    	u   zc         S  s7   t  |  j |  j j ƒ } |  j j } | j j | _ d S(   ud   
        Scrolls the window to makes the current line the first line in the visible region.
        N(   R   RY   R  Re   RE   R«   t   vertical_scroll(   Rb   R  R˜   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   a  s    c         S  s%   t  |  j |  j j ƒ } d | _ d S(   uc   
        Scrolls the window to makes the current line the last line in the visible region.
        i    N(   R   RY   R  R  (   Rb   R  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   l  s    c         S  sÂ   t  |  j |  j j ƒ } |  j j } | r¾ | j r¾ | j } | j d } t d | j j d ƒ } d } xG | d k r± | j	 | ƒ } | | | k  r­ | | 7} | d 8} qk Pqk W| | _
 n  d S(   u9   
        Center Window vertically around cursor.
        i   i    i   N(   R   RY   R  Re   R  t   window_heightt   maxRE   R«   t   get_height_for_lineR  (   Rb   R  R˜   t   infot   scroll_heightt   yt   heightt   line_height(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   y  s    	
u   %c         S  sÁ   |  j  } |  j r‹ d |  j k  o, d k n r~ | j j t |  j | j j d d ƒ d ƒ } t | | j j d t	 j
 ƒSt d ƒ Sn2 | j j ƒ  } | r³ t | d t	 j ƒSt d ƒ Sd S(   u›   
        Implements 'c%', 'd%', '%, 'y%' (Move to corresponding bracket.)
        If an 'arg' has been given, go this this % position in the file.
        i    id   i   R9   N(   Re   R]   R\   RE   RB   t   intt
   line_countR6   RA   R/   R4   t   find_matching_bracket_positionR3   (   Rb   RJ   t   absolute_indexR  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   •  s    			'u   |c         S  s    t  |  j j j |  j d ƒ ƒ S(   Ni   (   R6   Re   RE   t   get_column_cursor_positionR\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ¯  s    c         S  s_   |  j  j } |  j rB t | j |  j d d ƒ | j d t j ƒSt | j	 ƒ  d t j ƒSd S(   u/   
        Implements 'gg', 'cgg', 'ygg'
        i   i    R9   N(
   Re   RE   R]   R6   RB   R\   RA   R/   R4   t   get_start_of_document_position(   Rb   t   d(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   µ  s    	-u   _c         S  s   t  |  j j j ƒ  d t j ƒS(   uQ   
        Go to last non-blank of line.
        'g_', 'cg_', 'yg_', etc..
        R9   (   R6   Re   RE   t'   last_non_blank_of_current_line_positionR/   R3   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Ã  s    c         S  sD   |  j  j j d |  j ƒ } t | d k	 r4 | d n d d t j ƒS(   uZ   
        Go to last character of previous word.
        'ge', 'cge', 'yge', etc..
        R   i   i    R9   N(   Re   RE   t   find_previous_word_endingR\   R6   R^   R/   R3   (   Rb   t   prev_end(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Ì  s    c         S  sJ   |  j  j j d |  j d t ƒ } t | d k	 r: | d n d d t j ƒS(   uZ   
        Go to last character of previous WORD.
        'gE', 'cgE', 'ygE', etc..
        R   Rï   i   i    R9   N(	   Re   RE   R+  R\   R’   R6   R^   R/   R3   (   Rb   R,  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Õ  s    !u   mc         S  s—   t  |  j |  j j ƒ } |  j } | r | j r | j j } | j j d t ƒ } | t	 t
 | d t | j j ƒ ƒ ƒ 7} t | d t j ƒSt d ƒ S(   uY   
        Like g0, but half a screenwidth to the right. (Or as much as possible.)
        R¥   i   R9   i    (   R   RY   R  Re   R  t   window_widthRE   R¨   Rt   R#  t   minRC   R¦   R6   R/   R3   (   Rb   R  Rh   t   widthR7   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Þ  s    	)u   Gc         S  s<   |  j  } t | j j | j j d d ƒ | j d t j ƒS(   uL   
        Go to the end of the document. (If no arg has been given.)
        i   i    R9   (   Re   R6   RE   RB   R$  RA   R/   R4   (   Rb   t   buf(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   î  s    	c         S  s   |  j  j |  j d ƒ d S(   uh   
        If an argument is given, move to this line in the  history. (for
        example, 15G)
        i   N(   Re   t   go_to_historyR\   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   û  s    u	   123456789c         S  s   |  j  |  j ƒ d S(   uL   
            Always handle numberics in navigation mode as arg.
            N(   t   append_to_arg_countR©   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    c         S  s   |  j  |  j ƒ d S(   u)    Zero when an argument was already give. N(   R2  R©   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    c         S  s   |  j  j |  j d t ƒd S(   u1   
        Insert data at cursor position.
        RÇ   N(   Re   RÈ   R©   R’   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    c         S  s   |  j  S(   N(   t	   is_repeat(   RÊ   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€     s    c         S  sË   |  j  } | j } g  } d } x; | j D]0 } | j | | | !ƒ | j |  j ƒ | } q( W| j | | ƒ g  t | j ƒ D] \ } } | | d ^ q} } d j | ƒ | _ | | _ | j d 7_ d S(   uŽ   
        Insert data at multiple cursor positions at once.
        (Usually a result of pressing 'I' or 'A' in block-selection mode.)
        i    i   u    N(   Re   RP   Rµ   R´   R©   R²   Rª   RA   (   Rb   Rh   t   original_textRP   t   pt   p2R¸   t   new_cursor_positions(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    		
0	c   
      S  s   |  j  } | j } t } g  } d } xl | j D]a } | d k ru | | d d k ru | j | | | d !ƒ t } n | j | | | !ƒ | } q. W| j | | ƒ | rg  | d  D] } t | ƒ ^ qµ } t t | ƒ ƒ }	 d j	 | ƒ | _ |	 | _ | j
 d 8_
 n |  j j j ƒ  d S(   u$    Backspace, using multiple cursors. i    i   u   
iÿÿÿÿu    N(   Re   RP   Rt   Rµ   R´   R’   RC   t   listR+   Rª   RA   RY   Rß   Rà   (
   Rb   Rh   R4  t   deleted_somethingRP   R5  R6  t   partt   lengthsR7  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   5  s&    		 	
#	c   
      S  s  |  j  } | j } t } g  } g  } d } x` | j D]U } | j | | | !ƒ | t | ƒ k sp | | d k ry | } q4 | d } t } q4 W| j | | ƒ | r÷ g  | d  D] } t | ƒ ^ q¯ }	 t t |	 ƒ ƒ } d j	 | ƒ | _ | | _ n |  j
 j j ƒ  d S(   u!    Delete, using multiple cursors. i    u   
i   iÿÿÿÿu    N(   Re   RP   Rt   Rµ   R´   RC   R’   R8  R+   Rª   RY   Rß   Rà   (
   Rb   Rh   R4  R9  RP   R7  R5  R6  R:  R;  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   V  s&    		"	

#c         S  s   |  j  j ƒ  d S(   u   
        Pressing the ControlX - ControlL sequence in Vi mode does line
        completion based on the other lines in the document and the history.
        N(   Re   t   start_history_lines_completion(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   y  s    c         S  s   d S(   u&   
        Complete file names.
        N(    (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    c         S  s   t  |  j j _ d S(   u    Go into digraph mode. N(   R’   RY   RZ   t   waiting_for_digraph(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ‰  s    c         S  s   |  j  j d  k	 S(   N(   RZ   t   digraph_symbol1R^   (   RY   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   digraph_symbol_1_givenŽ  s    c         S  s   |  j  |  j j _ d  S(   N(   R©   RY   RZ   R>  (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ’  s    c         S  sÜ   z¶ yH |  j  j j |  j f } | t k r@ | d d d … } n  t | } Wn! t k
 rn |  j  j j ƒ  nG X|  j  j j t	 j
 k } |  j j t j | ƒ d | ƒt |  j  j _ Wd t |  j  j _ d |  j  j _ Xd S(   u    Insert digraph. NiÿÿÿÿRÇ   (   RY   RZ   R>  R©   R   t   KeyErrorRß   Rà   R…   R   R‡   Re   RÈ   t   sixt   unichrRt   R=  R^   (   Rb   t   codet   symbolRÇ   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   –  s     	N(   u   gu   ?(   u   gu   u(   u   gu   U(   u   gu   ~(   u   ~(   u   "u   "(   u   'u   '(   u   `u   `(   u   [u   ](   u   <u   >(   u   {u   }(   u   (u   )(*   R(   R'   R   Rj   R^   R   R   R   R   R   R   R   R   R
   R   t   ControlVR&   t   Escapet   Upt   ControlPt   Downt   ControlNt   ControlHt	   Backspacet   ControlYt   ControlEt   ControlJt   InsertR   Rt   Rå   Rz   Rw   R’   t   Leftt   RightR   t   Deletet   ControlXt   ControlLt   ControlFt   ControlK(   R|   Rp   t   handleRl   t   insert_modet   insert_multiple_modet   replace_modeRq   Ro   t   digraph_modet   vi_transform_functionsRM   R¯   Rè   Rì   t   kt   ft   funcRí   Rð   Rø   Rù   R  R  R  R   R  t   nR?  (    (   R|   R¹   Rç   Rf   sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   load_vi_bindings,  s`   								!	!!	###&	##)#&#&

$
$
!#
$!
			#	#	)))!!"				
	



	!	!		!	!!	!+	%"			'*!#$$"#"c          C  s5   t  ƒ  }  t ƒ  } |  j d d | ƒt d ƒ ƒ |  S(   uU   
    Pressing 'v' in navigation mode will open the buffer in an external editor.
    u   vRW   u   edit-and-execute-command(   R'   R   Rj   R&   (   Rp   Rl   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   load_vi_open_in_editor_bindings¯  s
    		c          C  s«   t  t ƒ  t ƒ  ƒ }  |  j } t j t ƒ } t ƒ  } | d d | | @ƒd „  ƒ } | t j	 d | ƒ| t j
 d | ƒd „  ƒ ƒ } | t j d | ƒd „  ƒ } |  S(   Nu   !RW   c         S  s&   |  j  j t ƒ t j |  j  j _ d S(   u.   
        '!' opens the system prompt.
        N(   RY   t
   push_focusR   R   R†   RZ   R…   (   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Â  s    c         S  s7   t  j |  j j _ |  j j t j ƒ  |  j j ƒ  d S(   u'   
        Cancel system prompt.
        N(	   R   RŠ   RY   RZ   R…   t   buffersR   R‰   t	   pop_focus(   Rb   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Ê  s    c         S  sV   t  j |  j j _ |  j j t } |  j j | j ƒ | j	 d t
 ƒ |  j j ƒ  d S(   u%   
        Run system command.
        t   append_to_historyN(   R   RŠ   RY   RZ   R…   Re  R   t   run_system_commandRP   R‰   R’   Rf  (   Rb   t   system_buffer(    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   Ô  s
    (   R(   R'   R   Rj   t   filterst   HasFocusR   R   R   RF  t   ControlCRO  (   Rp   RX  t	   has_focusRl   RM   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   load_vi_system_bindings»  s    		 !	c   
        sF  ˆ  d  k s t ˆ  ƒ s t ‚ ˆ  s0 d „  ‰  n  t t ƒ  t ƒ  ƒ } | j } t j ˆ ƒ } t	 ƒ  } t
 ƒ  } t d „  ƒ } | d d | | B| @ƒ| d d | | B| @ƒ| t j d | ƒ‡  ‡ f d †  ƒ ƒ ƒ } | d d | | B| @ƒ| d d | | B| @ƒ| t j d | ƒ‡  ‡ f d †  ƒ ƒ ƒ } | t j d | ƒ| t j d | ƒ‡  ‡ f d †  ƒ ƒ } d	 ‡  ‡ f d
 † ‰ | t j d | ƒ‡ f d †  ƒ } | t j d | ƒ‡ f d †  ƒ } ‡ f d †  }	 | t j d | ƒ| t j d | t |	 ƒ @ƒ| t j d | t |	 ƒ @ƒ‡ f d †  ƒ ƒ ƒ } | S(   Nc         S  s   |  j  S(   N(   R{   (   RY   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR|   ê  s    c         S  s   |  j  j |  ƒ S(   N(   t   applicationt   reverse_vi_search_direction(   RY   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR€   ô  s    u   /RW   u   ?c           s;   t  j ˆ  |  j ƒ _ t j |  j j _ |  j j ˆ ƒ d S(   u*   
        Vi-style forward search.
        N(	   R   RÞ   RY   RÜ   R   R†   RZ   R…   Rd  (   Rb   (   R|   t   search_buffer_name(    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   ö  s    c           s;   t  j ˆ  |  j ƒ _ |  j j ˆ ƒ t j |  j j _ d S(   u+   
        Vi-style backward search.
        N(	   R   RÛ   RY   RÜ   Rd  R   R†   RZ   R…   (   Rb   (   R|   Rq  (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    c           s–   |  j  j j |  j  ƒ } |  j  j ˆ } | j rI | j ˆ  |  j  ƒ _ n  | j ˆ  |  j  ƒ ƒ | j ƒ  | j ƒ  t j |  j  j	 _
 |  j  j ƒ  d S(   u;   
        Apply the search. (At the / or ? prompt.)
        N(   RY   Re  t   previousRP   RÝ   Rg  R‰   R   RŠ   RZ   R…   Rf  (   Rb   t   input_buffert   search_buffer(   R|   Rq  (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM     s    	

i   c           so   ˆ  |  ƒ } | j  | k } |  j ˆ j | _ | | _  | sk |  j j |  ƒ } | j | d t d | ƒn  d S(   u0    Apply search, but keep search buffer focussed. RÙ   R   N(   RÜ   Re  RP   Rr  RÝ   Rt   (   RY   RÜ   R   R{   t   direction_changedRs  (   R|   Rq  (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   incremental_search*  s    	c           s    ˆ  |  j  t j d |  j ƒd  S(   NR   (   RY   R   RÛ   R\   (   Rb   (   Rv  (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   9  s    c           s    ˆ  |  j  t j d |  j ƒd  S(   NR   (   RY   R   RÞ   R\   (   Rb   (   Rv  (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   =  s    c           s   |  j  ˆ  j d k S(   u/    Returns True when the search buffer is empty. u    (   Re  RP   (   RY   (   Rq  (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   search_buffer_is_emptyA  s    c           s7   t  j |  j j _ |  j j ƒ  |  j j ˆ  j ƒ  d S(   u    
        Cancel search.
        N(   R   RŠ   RY   RZ   R…   Rf  Re  R‰   (   Rb   (   Rq  (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyRM   E  s    (   R^   Ri   R`   R(   R'   R   Rj   Rj  Rk  R   R   R
   R   t   ControlSt   ControlRRO  RF  Rl  RK  RL  (
   R|   Rq  Rp   RX  Rm  Rl   Rq   Rp  RM   Rw  (    (   R|   Rv  Rq  sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   load_vi_search_bindingså  s4    			..*$$4
c          C  sº   t  t ƒ  t ƒ  ƒ }  |  j } | t j ƒ t ƒ | t j ƒ t ƒ | t j	 ƒ t
 ƒ | t j ƒ t ƒ | t j ƒ t ƒ | t j ƒ t ƒ | t j ƒ t ƒ | t j ƒ t ƒ |  S(   uˆ   
    Key bindings, for scrolling up and down through pages.
    This are separate bindings, because GNU readline doesn't have them.
    (   R(   R'   R   Rj   R   RV  R   t   ControlBR   t   ControlDR!   t   ControlUR    RN  R#   RM  R"   t   PageDownR%   t   PageUpR$   (   Rp   RX  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt&   load_extra_vi_page_navigation_bindingsT  s    	t   ViStateFilterc           B  s    e  Z d  Z d „  Z d „  Z RS(   u    Deprecated! c         C  s   | |  _  | |  _ d  S(   N(   t   get_vi_statet   mode(   R:   R‚  Rƒ  (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR;   j  s    	c         C  s   |  j  | ƒ j |  j k S(   N(   R‚  R…   Rƒ  (   R:   RY   (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   __call__n  s    (   R0   R1   RU   R;   R„  (    (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyR  h  s   	(R   t
   __future__R    t   prompt_toolkit.bufferR   R   R   R   t   prompt_toolkit.documentR   t   prompt_toolkit.enumsR   R   R   t   prompt_toolkit.filtersR	   R
   R   R   R   t   prompt_toolkit.filters.cliR   R   R   R   R   R   R   R   t#   prompt_toolkit.key_binding.digraphsR   t#   prompt_toolkit.key_binding.vi_stateR   R   t   prompt_toolkit.keysR   t   prompt_toolkit.layout.utilsR   t   prompt_toolkit.selectionR   R   R   t   scrollR   R   R    R!   R"   R#   R$   R%   t   named_commandsR&   Rp   R'   R(   R)   Rj  t	   six.movesR*   R}   RA  R   t	   itertoolsR+   t   ImportErrort   __all__t   PY2t   ascii_lowercaset   decodeRÃ   t   objectR/   R6   Rw   Rz   R^   Rb  Rc  Rn  Rz  R€  R  (    (    (    sE   lib/python2.7/site-packages/prompt_toolkit/key_binding/bindings/vi.pyt   <module>   s\   "(::			
T	]	Cÿ ÿ ÿ ÿ ÿ ˆ		*n	