a „oeÊPã@spddlZddlZddlmZddlmZejdkr:ejZnejZGdd„dƒZ dd „Z d d „Z Gd d „d ƒZ dS)éN)Údefault_scintilla_encodingé)ÚPyParse)éc @sPeZdZdgd¢fgZdgddgdgdœZdgd gd gd gd gd gdgdgdœZgd¢gd¢d dgd dgd dgd dgdgdgdœZdZdZdZ dZ dZ dd„Z dd„Z dId d!„Zd"d#„Zd$d%„Zd&d'„ZeZd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdd?„Zd@dA„ZdBdC„Z dDdE„Z!dFdG„Z"dHS)JÚ AutoIndentZedit) N)z_Indent regionú<>)z_Dedent regionú<>)zComment _out regionú<>)zU_ncomment regionú<>)z Tabify regionú<>)zUntabify regionú<>)ú Toggle tabsú<>)zNew indent widthú<>zz z z )z<>z<>z<>úúz z z z z z )rrr r r r rr)zzr)zzrz z z z réér)é2iôi@KLcCs||_|j|_dS©N)ÚeditwinÚtext)Úselfr©rú@C:\Program Files\Certbot\pkgs\pythonwin\pywin\idle\AutoIndent.pyÚ__init__dszAutoIndent.__init__cKsf| ¡D]X\}}|dkr ||_q|dkr0||_q|dkr@||_q|dkrP||_qtdt|ƒƒ‚qdS)NÚusetabsÚ indentwidthÚtabwidthÚcontext_use_ps1zbad option name: %s)ÚitemsrrrrÚKeyErrorÚrepr)rÚoptionsÚkeyÚvaluerrrÚconfighszAutoIndent.configcCsR|r@|r@| ¡}d|kr$dkr.nn||_|j|jkr@d|_|j |j¡dS)Nérr)Ú guess_indentrrrrZ set_tabwidth)rZispythonsourceÚguessÚirrrÚset_indentation_params{s z!AutoIndent.set_indentation_paramsc CsD|j}|j ¡\}}|r8|r8| ||¡| d|¡dS| dd¡}|dkrr| ddd¡rf| d¡n| ¡dS|dd vrŒ| d¡dSt|  |j ¡ƒ}|d ks¨J‚t |d |j ƒ|j }d }|dd…}|d }t|  |j ¡ƒ}||ksü|dd vrÄqqÄ|  ¡| d |d¡||kr8| dd ||¡| ¡dS)NÚinsertÚbreakúinsert linestartÚú>ú1.0z insert-1céÿÿÿÿú rrz insert-%dcú )rrÚget_selection_indicesÚdeleteÚmark_setÚgetÚcompareÚbellÚlenÚ expandtabsrÚintrÚundo_block_startr,Úundo_block_stop) rÚeventrÚfirstÚlastÚcharsZhaveZwantZ ncharsdeletedrrrÚsmart_backspace_event…s<         z AutoIndent.smart_backspace_eventc Cs|j}|j ¡\}}| ¡zÔ|rb|rbt|ƒt|ƒkrJ| |¡W| ¡S| ||¡| d|¡|  dd¡}t ||j ƒ\}}|t |ƒkrœ|  ||j¡n>|jr¨d}n&t | |j ¡ƒ}|j} d| || }| d|¡| d¡W| ¡dS| ¡0dS)Nr,r.ú r4r-)rrr5r>Ú index2lineÚindent_region_eventr?r6r7r8Ú classifywsrr;Ú reindent_torrr<r,Úsee) rr@rrArBÚprefixÚrawÚ effectiveZpadÚnrrrÚsmart_indent_event­s4 í      þzAutoIndent.smart_indent_eventc Csè|j}|j ¡\}}| ¡z°|r@|r@| ||¡| d|¡| dd¡}dt|ƒ}}||krx||dvrx|d}qZ||kr´| d|d¡| dd¡W|  d¡|  ¡dS|d|…}d}|rê|d dvrê|dd …}|d}qÄ|r| d|d¡| d¡dvr| d¡q| dd¡t |  d¡ƒ} t  |j|j¡} |jD]d} t| | dƒ} t| ƒd } | | d¡}|  |¡|  |j| | ¡¡}|dusª| dkrNq´qN|  |pÀd¡|  ¡}|t jkrt|t jkrò| d|¡nj|t jkr| |  ¡¡nN|t jkrF|   ¡dkr6| d|¡n| |  !¡¡nds\Jd t|ƒƒ‚W|  d¡|  ¡dS|  "¡}| d|¡|  #¡rž| $|¡n|r¸|  %¡r¸| &|¡W|  d¡|  ¡dS|  d¡|  ¡0dS) Nr,r.rr3rzinsert - %d charsÚ r-r2ú.0zbogus continuation type )'rrr5r>r6r7r8r;r,rJr?rFÚindexrZParserrrÚnum_context_linesÚmaxr"Zset_strZfind_good_parse_startrÚ_build_char_in_string_funcZset_loZget_continuation_typeZC_NONEZC_STRINGZ C_BRACKETrIZcompute_bracket_indentZ C_BACKSLASHZget_num_lines_in_stmtZcompute_backslash_indentZget_base_indent_stringZis_block_openerrOZis_block_closerrD)rr@rrArBÚliner*rNÚindentÚlnoÚyÚcontextZstartatZ startatindexZrawtextZbodÚcrrrÚnewline_and_indent_eventÎsŒ     C ¼         ÿ      ò     ýÿ z#AutoIndent.newline_and_indent_eventcCs||jjfdd„}|S)NcSs||d|ƒS)Nz+%dcr)ÚoffsetZ _startindexZ_icisrrrÚinner-sz4AutoIndent._build_char_in_string_func..inner)rZis_char_in_string)rZ startindexr^rrrrU,sz%AutoIndent._build_char_in_string_funcc Csv| ¡\}}}}tt|ƒƒD]D}||}|rt||jƒ\}} | |j} | | ¡||d…||<q| ||||¡dS)Nr-)Ú get_regionÚranger;rHrrÚ _make_blanksÚ set_region© rr@ÚheadÚtailrCÚlinesÚposrVrLrMrrrrG2s zAutoIndent.indent_region_eventc Cs|| ¡\}}}}tt|ƒƒD]J}||}|rt||jƒ\}} t| |jdƒ} | | ¡||d…||<q| ||||¡dS)Nrr-) r_r`r;rHrrTrrarbrcrrrÚdedent_region_event=szAutoIndent.dedent_region_eventcCsN| ¡\}}}}tt|ƒdƒD]}||}d|||<q | ||||¡dS)Nrú##©r_r`r;rb©rr@rdrerCrfrgrVrrrÚcomment_region_eventHs zAutoIndent.comment_region_eventcCs†| ¡\}}}}tt|ƒƒD]T}||}|s.q|dd…dkrL|dd…}n|dd…dkrh|dd…}|||<q| ||||¡dS)Nr'rirú#rjrkrrrÚuncomment_region_eventOs  z!AutoIndent.uncomment_region_eventc Cs†| ¡\}}}}| ¡}tt|ƒƒD]L}||}|r$t||ƒ\} } t| |ƒ\} } d| d| || d…||<q$| ||||¡dS©NrEr4)r_Ú _asktabwidthr`r;rHÚdivmodrb) rr@rdrerCrfrrgrVrLrMÚntabsÚnspacesrrrÚtabify_region_event\s"zAutoIndent.tabify_region_eventcCsP| ¡\}}}}| ¡}tt|ƒƒD]}|| |¡||<q$| ||||¡dSr)r_rpr`r;r<rb)rr@rdrerCrfrrgrrrÚuntabify_region_eventgs z AutoIndent.untabify_region_eventcCs0|jjddd|jd|jdr,|j |_dS)Nr z Turn tabs )ZonZoffú?)Úparentr-)rZaskyesnorr)rr@rrrÚtoggle_tabs_eventnsý zAutoIndent.toggle_tabs_eventcCs*| ¡}||jkr&||_|jddddS)Nr)r)r-)rprr+©rr@ÚnewrrrÚchange_tabwidth_eventxs  z AutoIndent.change_tabwidth_eventcCs4|jjdd|j|jddd}|r0||jkr0||_dS)Nz Indent widthzNew indent width (1-16)ré©rwZ initialvalueZminvalueZmaxvaluer-)rÚ askintegerrrryrrrÚchange_indentwidth_eventsúz#AutoIndent.change_indentwidth_eventcCsp|j}|j ¡\}}|r:|r:| |d¡}| |d¡}n| d¡}| d¡}| ||¡}| d¡}||||fS)Nz linestartz-1c lineend +1cr.zinsert lineend +1crP)rrr5rRr8Úsplit)rrrArBrdrerCrfrrrr_Œs    zAutoIndent.get_regioncCsx|j}d |¡}||kr$| ¡dS| ddd¡| d|¡| ¡| ||¡| ||¡| ¡|  d|d¡dS)NrPZselr1Úendr,) rÚjoinr:Z tag_remover7r>r6r,r?Ztag_add)rrdrerCrfrÚnewcharsrrrrb™s    zAutoIndent.set_regioncCs2|jr&t||jƒ\}}d|d|Sd|SdSro)rrqr)rrNrrrsrrrra©szAutoIndent._make_blankscCsJ|j}| ¡| ddd¡r(| dd¡|r>| d| |¡¡| ¡dS)Nr.z!=r,)rr>r9r6r,rar?)rÚcolumnrrrrrI³s zAutoIndent.reindent_tocCs"|jjdd|j|jdddp |jS)Nz Tab widthzSpaces per tab?rr|r})rr~rr)rrrrrp¼sú÷zAutoIndent._asktabwidthcCsPt|j|jƒ ¡\}}|r@|r@t||jƒ\}}t||jƒ\}}nd}}||S©Nr)ÚIndentSearcherrrÚrunrH)rÚopenerZindentedrLZ indentsmallZ indentlargerrrr(Îs zAutoIndent.guess_indentN)r)#Ú__name__Ú __module__Ú __qualname__ZmenudefsZkeydefsZwindows_keydefsZ unix_keydefsrrrrrSrr&r+rDrOr\Z auto_indentrUrGrhrlrnrtrurxr{rr_rbrarIrpr(rrrrrslþÿýø ð (!W         rcCs tt|ƒƒSr)r=Úfloat)rRrrrrFÙsrFcCsZd}}|D]D}|dkr*|d}|d}q |dkrL|d}||d|}q qRq ||fS)Nrr4rrEr)ÚsrrLrMZchrrrrHãs rHc@s$eZdZdd„Zdd„Zdd„ZdS)r†cCs(||_||_d|_|_d|_|_dSr…)rrr*ÚfinishedÚ blkopenlineÚ indentedline)rrrrrrr÷s zIndentSearcher.__init__cCsZ|jr d}nD|jd}|_t|ƒd}|j |dd¡r>d}n|j ||d¡}| t¡S)Nr/rrQz>=rz lineend+1c)rŽr*r"rr9r8Úencoder)rÚvalr*ZmarkrrrÚreadlineýs zIndentSearcher.readlinec Cs¦d}tj}tj}tj}|jt_zrzNt|jƒD]>\}}}}} ||krR||vrR| |_q,||kr,|jr,| |_qlq,Wntj t fy†Yn0W|t_n|t_0|j|jfS)N)ÚclassÚdefÚforÚifÚtryÚwhile) ÚtokenizeÚINDENTÚNAMEÚtabsizerÚtoken_generatorr“rrÚ TokenErrorÚIndentationError) rZOPENERSr›rœZ save_tabsizeÚtypÚtokenÚstartrrVrrrr‡ s" zIndentSearcher.runN)r‰rŠr‹rr“r‡rrrrr†ñsr†) ÚsysršZpywinrr/rÚ version_infoÚgenerate_tokensržrrFrHr†rrrrÚs   I