
    ^h                        S r SSKJr  SSKJr  / SQr\rSSS jjrSSS jjrSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrg)z
Key bindings, for scrolling up and down through pages.

This are separate bindings, because GNU readline doesn't have them, but
they are very useful for navigating through long multiline buffers, like in
Vi, Emacs, etc...
    )annotations)KeyPressEvent)scroll_forwardscroll_backwardscroll_half_page_upscroll_half_page_downscroll_one_line_upscroll_one_line_downc                   U R                   R                  R                  nU R                   R                  nU(       a  UR                  (       a  UR                  nUR
                  nUR                  nU(       a  US-  nUR                  R                  S-   nSnXuR                  :  a5  UR                  U5      n	X-   U:  a
  X-  nUS-  nOOXuR                  :  a  M5  UR                  R                  US5      Ul        ggg)z
Scroll window down.
      r   N)applayoutcurrent_windowcurrent_bufferrender_info
ui_contentwindow_heightdocumentcursor_position_row
line_countget_height_for_linetranslate_row_col_to_indexcursor_position)
eventhalfwbinfor   scroll_heightyheightline_heights
             d/home/james-whalen/.local/lib/python3.13/site-packages/prompt_toolkit/key_binding/bindings/scroll.pyr   r      s     			''A		  AQ]]}}__
 **aM JJ**Q.'''2215K#m3%Q ''' JJAA!QG+ q    c                   U R                   R                  R                  nU R                   R                  nU(       a  UR                  (       a  UR                  nUR
                  nU(       a  US-  n[        SUR                  R                  S-
  5      nSnUS:  a,  UR                  U5      nXx-   U:  a
  Xx-  nUS-  nOOUS:  a  M,  UR                  R                  US5      Ul        ggg)z
Scroll window up.
r   r   r   N)r   r   r   r   r   r   maxr   r   r   r   r   )	r   r   r   r   r   r    r!   r"   r#   s	            r$   r   r   8   s     			''A		  AQ]]}} **aM 1::11A56!e2215K#m3%Q !e JJAA!QG) qr%   c                    [        U SS9  g)z0
Same as ControlF, but only scroll half a page.
Tr   N)r   r   s    r$   r   r   V   s     5t$r%   c                    [        U SS9  g)z0
Same as ControlB, but only scroll half a page.
Tr)   N)r   r*   s    r$   r   r   ]   s     E%r%   c                   U R                   R                  R                  nU R                   R                  nU(       a  UR                  (       a  UR                  nUR
                  UR                  UR                  -
  :  aq  UR                  R                  UR                  R                  ::  a-  U=R                  UR                  R                  5       -  sl        U=R
                  S-  sl        gggg)z
scroll_offset += 1
r   N)r   r   r   r   r   vertical_scrollcontent_heightr   r   r!   configured_scroll_offsetstopr   get_cursor_down_position)r   r   r   r   s       r$   r
   r
   d   s     			''A		  A====D  4#6#69K9K#KK''))T-K-K-O-OO%%)L)L)NN%!!Q&!	 L  	r%   c                X   U R                   R                  R                  nU R                   R                  nU(       a  UR                  (       a  UR                  nUR
                  S:  a  UR                  UR                  5       5      nUR                  R                  UR                  S-
  U-
  UR                  R                  -
  -
  n[        [        SU5      5       H0  nU=R                  UR                  R!                  5       -  sl        M2     U=R
                  S-  sl        gggg)z
scroll_offset -= 1
r   r   N)r   r   r   r   r   r-   r   first_visible_liner   r!   r   r/   bottomranger'   r   get_cursor_up_position)r   r   r   r   first_line_height	cursor_up_s          r$   r	   r	   w   s     			''A		  A====D  1$$($<$<T=T=T=V$W! 0022&&'( 44;;<	 s1i01A%%)J)J)LL% 2 !!Q&!! %  	r%   c                   U R                   R                  R                  nU R                   R                  nU(       a  UR                  (       a  [        UR                  R                  5       UR                  S-   5      nX1l        UR                  R                  US5      Ul
        U=R                  UR                  R                  SS9-  sl
        ggg)zP
Scroll page down. (Prefer the cursor at the top of the page, after scrolling.)
r   r   Tafter_whitespaceN)r   r   r   r   r   r'   last_visible_liner-   r   r   r   get_start_of_line_positionr   r   r   
line_indexs       r$   scroll_page_downrA      s     			''A		  AQ]]88:A<M<MPQ<QR
&JJAA*aP	QZZBB! C 
 	
 qr%   c                   U R                   R                  R                  nU R                   R                  nU(       a  UR                  (       a  [        S[        UR                  R                  5       UR                  R                  S-
  5      5      nUR                  R                  US5      Ul        U=R                  UR                  R                  SS9-  sl        SUl        ggg)zQ
Scroll page up. (Prefer the cursor at the bottom of the page, after scrolling.)
r   r   Tr;   N)r   r   r   r   r   r'   minr3   r   r   r   r   r>   r-   r?   s       r$   scroll_page_uprD      s     			''A		  AQ]] 002AJJ4R4RUV4VW


 JJAA*aP	QZZBB! C 
 	
  qr%   N)F)r   Er   boolreturnNone)r   rE   rG   rH   )__doc__
__future__r   (prompt_toolkit.key_binding.key_processorr   __all__rE   r   r   r   r   r
   r	   rA   rD    r%   r$   <module>rN      sJ    # B H>H<%&'&'>
$r%   