
    %
iP                     f    d dl Z d dlmZ ddlmZ  G d d          Zd Zd Z G d	 d
          ZdS )    N)default_scintilla_encoding   )PyParsec            	       &   e Zd Zdg dfgZdgddgdgdZdgd	gd
gdgdgdgdgdgdZg dg dd
dgddgddgddgdgdgdZdZdZdZ	dZ
dZd Zd Zd3dZd Zd  Zd! ZeZd" Zd# Zd$ Zd% Zd& Zd' Zd( Zd) Zd* Zd+ Zd, Zd- Zd. Zd/ Z d0 Z!d1 Z"d2S )4
AutoIndentedit)	N)z_Indent region<<indent-region>>)z_Dedent region<<dedent-region>>)zComment _out region<<comment-region>>)zU_ncomment region<<uncomment-region>>)zTabify region<<tabify-region>>)zUntabify region<<untabify-region>>)Toggle tabs<<toggle-tabs>>)zNew indent width<<change-indentwidth>>z<Key-BackSpace>z<Key-Return>z
<KP_Enter>z	<Key-Tab>)z<<smart-backspace>>z<<newline-and-indent>>z<<smart-indent>><Control-bracketright><Control-bracketleft>z<Alt-Key-3>z<Alt-Key-4>z<Alt-Key-5>z<Alt-Key-6>z<Alt-Key-t>z<Alt-Key-u>)r	   r
   r   r   r   r   r   r   )z<Alt-bracketright>z<Meta-bracketright>r   )z<Alt-bracketleft>z<Meta-bracketleft>r   z<Meta-Key-3>z<Meta-Key-4>z<Meta-Key-5>z<Meta-Key-6>r         r   )2   i  i@KL c                 ,    || _         |j        | _        d S N)editwintext)selfr   s     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\pythonwin/pywin/idle/AutoIndent.py__init__zAutoIndent.__init__Y   s    L			    c                     |                                 D ]N\  }}|dk    r|| _        |dk    r|| _        !|dk    r|| _        /|dk    r|| _        =t          d|          d S )Nusetabsindentwidthtabwidthcontext_use_ps1zbad option name: )itemsr    r!   r"   r#   KeyError)r   optionskeyvalues       r   configzAutoIndent.config]   s    !--// 
	< 
	<JCi$%%#(  
"" %)))',$$:3::;;;
	< 
	<r   c                     |rD|rB|                                  }d|cxk    rdk    r
n n|| _        | j        | j        k    rd| _        | j                            | j                   d S )N   r   r   )guess_indentr!   r"   r    r   set_tabwidth)r   ispythonsourceguessis       r   set_indentation_paramsz!AutoIndent.set_indentation_paramsp   sx     	!^ 	!!!##AA{{{{{{{{{#$ 4=00 !!$-00000r   c                    | j         }| j                                        \  }}|r0|r.|                    ||           |                    d|           dS |                    dd          }|dk    rC|                    ddd          r|                    d           n|                                 dS |d         d	vr|                    d           dS t          |	                    | j
                            }|d
k    sJ t          |dz
  | j        z            | j        z  }d
}	 |d d         }|dz  }t          |	                    | j
                            }||k    s
|d         d	vrnH|                                 |                    d|z  d           ||k     r|                    dd||z
  z             |                                 dS )Ninsertbreakinsert linestart >1.0z	insert-1c 	r   r   z
insert-%dc )r   r   get_selection_indicesdeletemark_setgetcomparebelllen
expandtabsr"   intr!   undo_block_startr3   undo_block_stop)	r   eventr   firstlastcharshavewantncharsdeleteds	            r   smart_backspace_eventz AutoIndent.smart_backspace_eventz   s   yl88::t 	T 	KKt$$$MM(E***7 +X66B;;||Hc511 K((((		79E!!KK$$$7 5##DM2233axxxxD1H 0011D4DD	#2#JEQMu''6677Dt||uRy55	 	L=0(;;;$;;KK#"5666wr   c                 ^   | j         }| j                                        \  }}|                                 	 |rw|rut	          |          t	          |          k    r)|                     |          |                                 S |                    ||           |                    d|           |	                    dd          }t          || j                  \  }}|t          |          k    r|                     || j        z              nY| j        rd}n9t          |                    | j                            }| j        }	d|	||	z  z
  z  }|                    d|           |                    d           	 |                                 dS # |                                 w xY w)Nr3   r5   	r;   r4   )r   r   r<   rE   
index2lineindent_region_eventrF   r=   r>   r?   
classifywsr"   rB   reindent_tor!   r    rC   r3   see)
r   rG   r   rH   rI   prefixraw	effectivepadns
             r   smart_indent_eventzAutoIndent.smart_indent_event   s    yl88::t	# / /e$$
4(8(88833E::&   """"% E4(((h...XX0(;;F'>>NCc&kk!!  T-=!=>>>>< 4CC #F$5$5dm$D$D E EI(AY]!23CHc***HHX  """""D  """"s   8F C9F F,c                 8	   | j         }| j                                        \  }}|                                 	 |r.|r,|                    ||           |                    d|           |                    dd          }dt          |          }}||k     r||         dv r|dz  }||k     r
||         dv ||k    r[|                    d|z  d           |                    dd           	 |	                    d           |
                                 dS |d |         }d}|r%|d	         dv r|d d	         }|dz  }|r
|d	         dv |r|                    d|z  d           |                    d          dv r,|                    d           |                    d          dv ,|                    dd           t          |                    d                    }	t          j        | j        | j                  }
| j        D ]}}t%          |	|z
  d          }|d
}|                    |d          }|
                    |           |
                    | j        |                     |                    }||dk    r n~|
                    |pd           |
                                }|t          j        k    r|t          j        k    r|                    d|           n|t          j        k    r(|                     |
                                           ny|t          j        k    rW|
                                dk    r|                    d|           n:|                     |
                                            ntC          d|          	 |	                    d           |
                                 dS |
"                                }|                    d|           |
#                                r| $                    |           n+|r)|
%                                r| &                    |           	 |	                    d           |
                                 dS # |	                    d           |
                                 w xY w)Nr3   r5   r   r:   r   zinsert - %d chars
r4   r9   .0zbogus continuation type )'r   r   r<   rE   r=   r>   r?   rB   r3   rU   rF   rQ   indexr   Parserr!   r"   num_context_linesmaxset_strfind_good_parse_startr#   _build_char_in_string_funcset_loget_continuation_typeC_NONEC_STRING	C_BRACKETrT   compute_bracket_indentC_BACKSLASHget_num_lines_in_stmtcompute_backslash_indent
ValueErrorget_base_indent_stringis_block_openerr[   is_block_closerrN   )r   rG   r   rH   rI   liner0   rZ   indentlnoycontextstartatstartatindexrawtextbodcs                    r   newline_and_indent_eventz#AutoIndent.newline_and_indent_event   s   yl88::tQ	# / /E4(((h...88.99Dc$iiqAa%%DGu,,Q a%%DGu,,Avv /!3X>>>.555F HHX  """""G "1"XFA 48u,,CRCyQ  48u,,  ?/!3X>>>((8$$--H%%% ((8$$-- KK$''' TZZ1122Ct/??A1 	 	cGmQ//")///((<::		'"""--($*I*I,*W*W  ?gllE '3HHSXA''))AGN""(((KK&1111'+++
 $$Q%=%=%?%?@@@@'--- ..00144Hf5555(()C)C)E)EFFFF$%E%E%EFFF HHX  """"" --//FKK&)))  "" 2''.... 2A--// 2**5111HHX  """"" HHX  """"s   B1Q. JQ. A?Q. .+Rc                 &    || j         j        fd}|S )Nc                 $     ||d| z  z             S )Nz+%dc )offset_startindex_iciss      r   innerz4AutoIndent._build_char_in_string_func.<locals>.inner"  s    5v6777r   )r   is_char_in_string)r   
startindexr   s      r   re   z%AutoIndent._build_char_in_string_func!  s'    &08V 	8 	8 	8 	8 r   c                 D   |                                  \  }}}}t          t          |                    D ]Q}||         }|rEt          || j                  \  }}	|	| j        z  }	|                     |	          ||d          z   ||<   R|                     ||||           dS )Nr4   )
get_regionrangerB   rS   r"   r!   _make_blanks
set_region
r   rG   headtailrJ   linesposrs   rW   rX   s
             r   rR   zAutoIndent.indent_region_event'  s    #'??#4#4 dE5U$$ 	G 	GC:D G!+D$-!@!@YT--	!..y99DJFc
dE5111wr   c                 `   |                                  \  }}}}t          t          |                    D ]_}||         }|rSt          || j                  \  }}	t          |	| j        z
  d          }	|                     |	          ||d          z   ||<   `|                     ||||           dS )Nr   r4   )	r   r   rB   rS   r"   rb   r!   r   r   r   s
             r   dedent_region_eventzAutoIndent.dedent_region_event2  s    #'??#4#4 dE5U$$ 	G 	GC:D G!+D$-!@!@Y	D,< <a@@	!..y99DJFc
dE5111wr   c                     |                                  \  }}}}t          t          |          dz
            D ]}||         }d|z   ||<   |                     ||||           d S )Nr   ##r   r   rB   r   r   rG   r   r   rJ   r   r   rs   s           r   comment_region_eventzAutoIndent.comment_region_event=  sq    #'??#4#4 dE5Ua(( 	% 	%C:DE#JJdE511111r   c                 (   |                                  \  }}}}t          t          |                    D ]C}||         }|s|d d         dk    r|dd          }n|d d         dk    r
|dd          }|||<   D|                     ||||           d S )Nr+   r   r   #r   r   s           r   uncomment_region_eventz!AutoIndent.uncomment_region_eventD  s    #'??#4#4 dE5U$$ 	 	C:D BQBx4ABBxbqbSABBxE#JJdE511111r   c                 `   |                                  \  }}}}|                                 }t          t          |                    D ]K}||         }|r?t	          ||          \  }	}
t          |
|          \  }}d|z  d|z  z   ||	d          z   ||<   L|                     ||||           d S NrP   r;   )r   _asktabwidthr   rB   rS   divmodr   )r   rG   r   r   rJ   r   r"   r   rs   rW   rX   ntabsnspacess                r   tabify_region_eventzAutoIndent.tabify_region_eventQ  s    #'??#4#4 dE5$$&&U$$ 	G 	GC:D G!+D(!;!;Y!'	8!<!<w!E\C'M9DJFc
dE511111r   c                 
   |                                  \  }}}}|                                 }t          t          |                    D ] }||                             |          ||<   !|                     ||||           d S r   )r   r   r   rB   rC   r   )r   rG   r   r   rJ   r   r"   r   s           r   untabify_region_eventz AutoIndent.untabify_region_event\  s    #'??#4#4 dE5$$&&U$$ 	9 	9Cs..x88E#JJdE511111r   c                     | j                             ddd| j                 z   dz   | j                  r| j         | _        dS )Nr   z
Turn tabs )onoff?)parentr4   )r   askyesnor    r   )r   rG   s     r   toggle_tabs_eventzAutoIndent.toggle_tabs_eventc  sP    <  =66<9 ! 
 
 	,
  $|+DLwr   c                     |                                  }|| j        k    r|| _        |                     dd           dS )Nr   )r/   r4   )r   r"   r1   r   rG   news      r   change_tabwidth_eventz AutoIndent.change_tabwidth_eventm  sE    !!$-DM'''333wr   c                     | j                             dd| j        | j        dd          }|r|| j        k    r|| _        dS )NzIndent widthzNew indent width (1-16)r      r   initialvalueminvaluemaxvaluer4   )r   
askintegerr   r!   r   s      r   change_indentwidth_eventz#AutoIndent.change_indentwidth_eventt  sY    l%%%9) & 
 
  	#3$***"Dwr   c                 h   | j         }| j                                        \  }}|r3|r1|                    |dz             }|                    |dz             }n*|                    d          }|                    d          }|                    ||          }|                    d          }||||fS )Nz
 linestartz-1c lineend +1cr5   zinsert lineend +1cr]   )r   r   r<   r_   r?   split)r   r   rH   rI   r   r   rJ   r   s           r   r   zAutoIndent.get_region  s    yl88::t 	4T 	4::el233D::d%6677DD::011D::233Dt$$D!!T5%''r   c                    | j         }d                    |          }||k    r|                                 d S |                    ddd           |                    d|           |                                 |                    ||           |                    ||           |                                 |	                    d|d           d S )Nr]   selr8   endr3   )
r   joinrA   
tag_remover>   rE   r=   r3   rF   tag_add)r   r   r   rJ   r   r   newcharss          r   r   zAutoIndent.set_region  s    y99U##uIIKKKFue,,,h%%%D$D(###UD(+++++r   c                 `    | j         r#t          || j                  \  }}d|z  d|z  z   S d|z  S r   )r    r   r"   )r   rZ   r   r   s       r   r   zAutoIndent._make_blanks  s=    < 	#At}55NE7%<#-//7Nr   c                    | j         }|                                 |                    ddd          r|                    dd           |r)|                    d|                     |                     |                                 d S )Nr5   z!=r3   )r   rE   r@   r=   r3   r   rF   )r   columnr   s      r   rT   zAutoIndent.reindent_to  s    y<<*D(;; 	6KK*H555 	=KK$"3"3F";";<<<r   c                 d    | j                             dd| j        | j        dd          p| j        S )Nz	Tab widthzSpaces per tab?r   r   r   )r   r   r   r"   )r   s    r   r   zAutoIndent._asktabwidth  sC    L##!y!] $    }
	
r   c                     t          | j        | j                                                  \  }}|r3|r1t	          || j                  \  }}t	          || j                  \  }}ndx}}||z
  S Nr   )IndentSearcherr   r"   runrS   )r   openerindentedrW   indentsmallindentlarges         r   r,   zAutoIndent.guess_indent  sx    )$)T]CCGGII 	*h 	*)&$-@@C)(DMBBC())K+[((r   N)r   )#__name__
__module____qualname__menudefskeydefswindows_keydefsunix_keydefsr    r!   r"   r#   ra   r   r)   r1   rN   r[   r}   auto_indentre   rR   r   r   r   r   r   r   r   r   r   r   r   rT   r   r,   r   r   r   r   r      s_        
 
 
	
H$ !22#1<"@(M G 7756,o!.+_ -)?#0/	 	O
 
 


 
 

  -n=!. ?+^< -~>)?#0/! L< GKH O )! ! !< < <&1 1 1 1& & &P# # #BU# U# U#n +K  	 	 		 	 	2 2 22 2 2	2 	2 	22 2 2      ( ( (, , ,     
 
 
$) ) ) ) )r   r   c                 :    t          t          |                     S r   )rD   float)r_   s    r   rQ   rQ     s    uU||r   c                 l    dx}}| D ]*}|dk    r|dz  }|dz  }|dk    r|dz  }||z  dz   |z  }* ||fS )Nr   r;   r   rP   r   )sr"   rW   rX   chs        r   rS   rS     sm    C)  991HCNII4ZZ1HC"h.2h>II	>r   c                        e Zd Zd Zd Zd ZdS )r   c                 Z    || _         || _        dx| _        | _        d x| _        | _        d S r   )r   r"   r0   finishedblkopenlineindentedline)r   r   r"   s      r   r   zIndentSearcher.__init__  s4    	 !""/334,,,r   c                     | j         rd}nS| j        dz   x}| _        |d}| j                            |dd          rd}n| j                            ||dz             }|                    t                    S )Nr6   r   r^   z>=r   z lineend+1c)r   r0   r   r@   r?   encoder   )r   valr0   marks       r   readlinezIndentSearcher.readline  s    = 	@CC!#A:::Dy  tU33 @immD$*>??
 zz4555r   c                    d}t           j        }t           j        }t           j        }| j        t           _        	 	 t          j         | j                  D ]0\  }}}}}	||k    r||v r|	| _        ||k    r| j        r	|	| _         n1n# t           j        t          f$ r Y nw xY w|t           _        n# |t           _        w xY w| j        | j        fS )N)classdefforiftrywhile)
tokenizeINDENTNAMEtabsizer"   r   r   r   
TokenErrorIndentationError)
r   OPENERSr   r   save_tabsizetyptokenstartr   rs   s
             r   r   zIndentSearcher.run  s    ?}'=	,4<4Edm4T4T  0CsDd{{u'7'7+/((4+;,0)')9:    
  ,H|H++++!222s*   A
B B. BB. BB. .B<N)r   r   r   r   r   r   r   r   r   r   r     sA        4 4 46 6 6 3 3 3 3 3r   r   )	r   pywinr   r6   r   r   rQ   rS   r   r   r   r   <module>r      s     , , , , , ,      B) B) B) B) B) B) B) B)L    23 23 23 23 23 23 23 23 23 23r   