m &UIc@sndkZdkZdkZdkZdklZdkTdkZdkZdk Z dk Z dk Z dk Z dk Z dkZdkZdklZdkZdkZdkZdZedZdfdYZdZd ZdkZeZ[d fd YZd Zhd d<dd<ddZ6d?Z7d@Z8dAZ9dBZ:dCZ;dDZ<dEZ=dFZ>dGdHZ?dIZ@dGdJZAdKZBdLZCdMZDdNZEdOZFdPZGdQZHdRZIdSZJdTZKddUZLdddVZMdWZNddXZOddYZPdZZQd[ZRd\ZSd]ZTd^ZUd_ZVd`ZWd^ZXdZYddZZdedfZ[dgZ\dhZ]diZ^djZ_dkZ`dlZadmZbdnZcdoZddpZedqZfdrZgdsZhdtZiduZjdvZkdwZldxZmdyZnRS(N(s Percolator(sColorDelegator(s UndoDelegator(s IOBinding(sToplevel(sMultiStatusBarcCs tidjootiitidd}ti i doWddti d } tii do d}qd }tii|| dd}nti d d joGtiitidd ti d } tii| o | }qn-ti d jotiitid}ntii|}tii|o1|t_ti d jodtit_q{qdt_nti}||_|p|i}||_t||_ti|d|i|_}|o|i|_|i|i_ n h|_tiiti!d|_"t#|dd|_$}t%||_&}ti'ddd|_(t)|dddddddti*|ddd d!ti*|ddd"d#ti*|d$dd d%ti*|d$dd"d&ti*|d'dd d|i(d(ti'ddd( |_+}|i+|i_,|i-|i.|ii/d)|i0|ii1d*|i2|i1d+|i3|i1d,|i4|i1d-|i5|i1d.|i6|i1d/|i7|i1d0|i8|i1d1|i9|i1d2|i:|i1d3|i;|i1d4d5|i1d6|i<|i1d7|i=|i1d8|i>|i1d9|i?|i1d:|i@|i1d;|iA|i1d<|iB|i1d=|iC|i1d>|iD|i1d?|iE|i1d@|iF|i1dA|iG|i1dB|iH|i1dC|iI|i1dD|iJ|i1dE|iK|i1dF|iL|i1dG|iM|i1dH|iN|i1dI|iO|i1dJ|iPdK|i1dL|iPdM|ox||i|<|o||iR|>s<>s<>s <>s<>s<>s<>s<>s<>s<>s<>cCsdS(Ntbreak((tevent((Rtss<>s<>s<>s<>s<>s<>s <>s <>s<3>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>s<>sisis<>s<>s<>s<>tcommandtsidetfilltyscrollcommands font-boldttypetbooltboldtfonts font-sizetexpandRtlabels Recent Filest underlinetwindowstendit AutoIndent(Rthelp_urlRtosR tjointsystprefixtdochometplatformtcountt version_infotpyvertisdirtbasepathtchmfiletisfiletnormpathtidleConft CurrentThemet currentThemetflisttselftroottMenutmenubart WindowListtListedToplevelttoptvarst tkinter_varst inversedictt instance_dictt GetUserCfgDirtrecent_files_patht ScrollbarRtFramet text_framet GetOptionRtTextt GetHighlightR tfocused_widgett createmenubartapply_bindingstprotocolRtbindt close_eventtcuttcopytpastetcenter_insert_eventt help_dialogt python_docst about_dialogt config_dialogt open_modulet select_alltremove_selectiont find_eventtfind_again_eventtfind_in_files_eventtfind_selection_eventt replace_eventtgoto_line_eventtright_menu_eventtsmart_backspace_eventtnewline_and_indent_eventtsmart_indent_eventtindent_region_eventtdedent_region_eventtcomment_region_eventtuncomment_region_eventttabify_region_eventtuntabify_region_eventttoggle_tabs_eventtchange_indentwidth_eventtmove_at_edge_if_selectiontkeytdictt new_callbacktclose_all_callbacktopen_class_browsertopen_path_browsertset_status_bartyviewtpacktRIGHTtYtsett fontWeighttconfigtLEFTtBOTHtTOPt focus_sett PercolatortpertispythonsourceR tColorDelegatortcolort insertfiltert UndoDelegatortundotundo_block_starttundo_block_stoptset_saved_change_hooktsaved_change_hookt IOBindingtiotset_filename_change_hooktfilename_change_hooktrecent_files_menutmenudicttinsert_cascadetupdate_recent_files_listtexiststloadfilet set_filenametload_extensionstgetRtindexR@t add_separatort wmenu_endtregister_callbacktpostwindowsmenut tkMessageBoxtaskyesnottkSimpleDialogt askintegert showerrort extensionsthas_keytset_indentation_params(RURTR RRVRRMRRRNR@RRRKR RRRSRGRdR[((Rt__init__3s"                     "       7       '          cCs)|ii\}}|ii|dS(NR1(RURtdefaultfilenametdirnametbasenameRTtnew(RUR2RR((RRscCs|i|i|_|iidddt|iidddt|iidtdt|i i d|i |i i d|i |i i |i dS( NtcolumnsCol: ?R5tlinesLn: ?R6s s( RUtMultiStatusBarR[t status_bart set_labelRRtBOTTOMtXR Rltset_line_and_columnt after_idle(RU((RRscCsS|iitid\}}|iidd||iidd|dS(NRRsCol: %sRsLn: %s( RUR RtINSERTRRRRR(RUR2RR((RRs!Rt_Fileteditt_EdittformattF_ormattrunt_Runtoptionst_OptionsR?t_Windowsthelpt_HelpcCs|i}h|_}x_|iD]T\}}t|\}}t |d|||<}|i d|d|d|q W|i |idi t|_|idS(NRR=RR>R(RURXtmbarRt menu_specsRR=tprepstrR>RWRt add_cascadet fill_menusRtENDtbase_helpmenu_lengthtreset_help_menu_entries(RURRR=RRR>((RRis     cCso|id}|id}|djo d}n||ijo|i|id|nti |dS(NR?R@ii( RURRRR@RRtdeleteRYtadd_windows_to_menu(RURR@((RR s   cCs|iiddd|iidd|i|if|ip|in|i}||_t i d dj}|o|ii dd n|i |i|i|o|ii dd ndS( Ntsels1.0R@tinserts@%d,%diRR.tarrowtibeam(RUR t tag_removetmark_setR2txtytrmenut make_rmenuRERHtiswinRttk_popuptx_rootty_root(RUR2RR((RRs#   tCloses<>cCsdt|idd}x?|iD]4\}}|i|d}|id|d|qW||_dS(NttearofficCs|i|dS(N(R tevent_generatet eventname(R R((RR4.sR=R4( RWRUR Rt rmenu_specsR=RR4t add_command(RURR=RR4((RR+s  cCsti|iddS(Ns About IDLE(t aboutDialogt AboutDialogRUR[(RUR2((RRt3scCsti|iddS(NtSettings(t configDialogt ConfigDialogRUR[(RUR2((RRu6scCsGtiitiitiitd}ti|i d|dS(Nshelp.txttHelp( RCR RDtabspathRt__file__tfnttextViewt TextViewerRUR[(RUR2R((RRr9s-cCs<tid djoti|inti|idS(NiRR1(RERHRCt startfileRURBt webbrowsertopen(RUR2((RRs=scCs|iiddS(Ns<>R1(RUR R(RUR2((RRnDscCs|iiddS(Ns<>R1(RUR R(RUR2((RRoHscCs|iiddS(Ns <>R1(RUR R(RUR2((RRpLscCs=|iiddd|iidd|iiddS(NRs1.0send-1cRR1(RUR ttag_addRtsee(RUR2((RRwPscCs*|iiddd|iiddS(NRs1.0R@R(RUR RR (RUR2((RRxVscs7|ii|iidd}|S(sCursor move begins at start or end of selection When a left/right cursor key is pressed create and return to Tkinter a function which causes a cursor move from the associated edge of the selection. s sel.first+1cs sel.last-1ccsQ|id@djo9yddWqMtj oqMXndS(Niis sel.firstR(R2tstatetself_text_indextself_text_mark_sett edges_tablet edge_indextTclError(R2(RRRR(Rt move_at_edgees  N(s sel.first+1cs sel.last-1c(RUR RRRRRR(RURRRRR((RRRRRRZs   cCsti|idS(NR1(t SearchDialogtfindRUR (RUR2((RRynscCsti|idS(NR1(Rt find_againRUR (RUR2((RRzrscCsti|idS(NR1(Rtfind_selectionRUR (RUR2((RR|vscCs ti|i|i|idS(NR1(t GrepDialogtgrepRUR RRT(RUR2((RR{zscCsti|idS(NR1(t ReplaceDialogtreplaceRUR (RUR2((RR}~scCsz|i}tiddd|}|djodSn|djo|idSn|idd||iddS(NtGotosGo to line number:tparentR1iRs%d.0( RUR RRtlinenoRtbellRR (RUR2R R((RR~s     c Csgy|iidd}Wntj o d}nX|i}tiddd|id|}|o|i}n|pdSny"t|\}}\}}}Wn>ttfj o,}tidt|d|idSnX|tijo%tid d |d|idSn|o|in|io|ii|n|ii|dS( Ns sel.firstssel.lastttModulesAEnter the name of a Python module to search on sys.path and open:Rt initialvalues Import errorsUnsupported types%s is not a source module(RUR RRRtstripRt askstringRtfRtsuffixtmodeR8t NameErrorRtmsgRRtstrRR RRTR RR( RUR2RR%R'RR)R8R&((RRvs4   "   cCs|ii}|p.tiddd|i|iidSnti i |\}}ti i |\}}dk}|i|i||gdS(Ns No filenames&This buffer has no associated filenametmaster(RURR RRR RRRCR Rtheadttailtsplitexttbasetextt ClassBrowserRT(RUR2R0R1R,R R-R/((RRs     cCsdk}|i|idS(N(t PathBrowserRURT(RUR2R2((RRs cCso|dj o^|djoQ|iidd||iiddd|iiddd|indS(NiRs%d.0Rs1.0R@s insert +1l(RRRUR RRR tcenter(RUR((Rtgotolines cCs|ptSntiitii|\}}tii|djotSny&t |}|i }|i Wntj o tSnX|ido|iddjS(Ns.pys.pyws#!tpythoni(s.pys.pyw(R tTrueRCR R.RR/R0tnormcaseR R%treadlineRRtIOErrortFalset startswithR(RUR R%R0R/R((RRs$   cCs"|io|ii|ndS(N(RURTt close_edit(RU((Rt close_hooks cCs ||_dS(N(R=RU(RUR=((Rtset_close_hookscCsj|io|ii|n|i|ii||i|iio|i n |i dS(N( RURTtfilename_changed_editRR[tupdate_windowlist_registryRRR t addcolorizert rmcolorizer(RU((RRs  cCs^|iodSn|ii|i|i|_|ii|i|ii|idS(N(RURRt removefilterRRR(RU((RRAs  cCsX|ipdSn|ii|i|ii|id|_|ii|idS(N(RURRRCRRR(RU((RRBs   cCse|io&|i|_|ii|intiddd}|ii ti |ddS(s(Update the colour theme if it is changedRtThemeRR%N( RURRRRRQRetthemeR RRg(RURE((RtResetColorizers  cCsjd}tidddddo d}n|iidtidddtiddd |fd S( s.Update the text widgets' font if it is changedR%RRs font-boldR8R9R:R;s font-sizeN(RRQReRUR R(RUR((Rt ResetFonts  c Csti|i_|ii} x*| iD]\}}|i i |q+W|i h} xf|ii D]X}h| |d(%trf_listRCR RRURaR t rf_list_filet readlinesRtnew_fileRtremoveRt bad_pathstappendt_[1]tulcharstlentrf_filet writelinesR[R_RStinstanceRRRRtzipRItiRt file_namet#_EditorWindow__recent_file_callbacktcallbackR(RURqRuR|RR}RoRzRRnRvRR RsRx((RREsJ (2    cs|d}|S(Ncsiid|dS(NteditFile(RURR t fn_closure(R(RU(Rtopen_recent_filels(R}R(RUR}R((RURt__recent_file_callbackkscCs|i}|i}|o|o|d|}n)|o |}n|o |}nd}|p |p|}|ipd|}d|}n|ii ||ii |dS(Ns - tUntitleds*%s*s*%s( RUt short_titletshortt long_titletlongttitleticont get_savedR[twm_titlet wm_iconname(RURRRR((RRps      cCs |iiS(N(RURR(RU((RRscCs|ii|dS(N(RURt set_savedtflag(RUR((RRscCs|iidS(N(RURt reset_undo(RU((RRscCs-|ii}|otii|}n|S(N(RURR RCR R(RUR ((RRs cCs|iipdS(NR (RURR (RU((RRscCs|idS(N(RUR3(RUR2((RRqsRcCsb|i}|i\}}|i|}||}t d||d}|i t |dS(Nii( RUR tgetwindowlinesR[tbott getlinenotmarkRR/tmaxtnewtopRtfloat(RURR RRR/R[R((RR3s   cCss|i}|id}|id}||jo5|idjo"t|d}||d}n||fS(Ns@0,0s@0,65535iR/(RUR RR[Rt winfo_heighttintR/(RUR RR/R[((RRs  cCs"|i}tt|i|S(N(RUR RRRR(RURR ((RRs cCs:|ii}tid|}tt|i }|S(sReturn (width, height, x, y)s(\d+)x(\d+)\+(-?\d+)\+(-?\d+)N( RUR[t wm_geometrytgeomtretmatchtmtmapRtgroupsttuple(RURRR((Rt get_geometrys cCs|idS(N(RUR(RUR2((RRmscCsq|ioc|ipE|iidjo|iin|ii|iin|iiSndS(NR%( RURRR[R t deiconifytlowertliftt maybesave(RU((RRs   cCs+|i}|djo|in|S(Ntcancel(RURtreplyt_close(RUR((RRs  cCs|iio|id|iinti|i|io|ind|_ d}|i |ii d|_d|_ |io0|ii }|o|i}|ii |nd|_d|_|ii d|_|p|iindS(NRqi(RURR RRYtunregister_callbackRR=RRTt colorizingtunload_extensionsRRRR[tdohR R]Rtdestroy(RURR((RRs&         cCsh|_|idS(N(RURtload_standard_extensions(RU((RRs cCsEx5|iiD]$}t|do|iqqWh|_dS(NR(RURtvaluestinsthasattrR(RUR((RRs cCsXxQ|iD]C}y|i|Wq dGt|GHdk}|iq Xq WdS(NsFailed to load extension(RUtget_standard_extension_namesRtload_extensiontreprt tracebackt print_exc(RURR((RRs  cCstidtS(Nt editor_only(RQt GetExtensionsR6(RU((RRscCseyt|ttg}Wn tj odG|GHdSnXt||}t i |}t |do|i|i|n||}||i|<|o|i|x|iD]}|idd}x |d djo|d}qWx |ddjo|d }qW|d }t ||o |ii|t||qqWn|S( Ns Failed to import extension: RQt-t_itt_event(t __import__RtglobalstlocalstmodRRtgetattrtclsRQtGetExtensionBindingsRLRRURRQRRRjRStveventRt methodnameR Rl(RURRRRRLRR((RRs4       (cCsk|djo|ii}n|i}||_x5|iD]'\}}|o|i ||q<q<WdS(N( RLRRURJRKR RMR2RNt event_add(RURLR R2RN((RRj s    c Csr|d jo|ii}n|d jo|ii}n|i} |i}x|D]\} }| i | }|pqSnx|D]} | p|i q| \}}|d dj}|o|d}nt|\}}t||}||d} |o>|i|t} |id|d|d| d|d| q|id|d|d| d|qWqSWd S( sAdd appropriate entries to the menus and submenus Menus that are absent or None in self.menudict are ignored. it!cCs|i|dS(N(R RR(R R((RR4,sR=R>R4RHtvariableN(RQRRURJRLRKRR tmnamet entrylistRRR`RR=Rt checkbuttonRR>RYRHR4t get_var_objt BooleanVartvartadd_checkbuttonR(RURQRLRHR RRR=RR4RRRR`RR>((RRs>       cCs7|i|}|o|i}|Sn t|dS(N(RURRRRtvalueR((RURRR((Rtgetvar8s  cCs7|i||}|o|i|n t|dS(N(RURRtvartypeRRRR((RURRRR((Rtsetvar@scCsC|ii|}| o%|o||i|i|<}n|S(N(RUR]RRRRR (RURRR((RRGscCsB|io0|iid|pd|ii|jSndSdS(NtTODOtSTRINGi(RURR t tag_prevranget text_indext tag_names(RUR((Rtis_char_in_stringWs 0cCsPy2|iid}|iid}||fSWntj o dSnXdS(Ns sel.firstssel.last(NN(RUR RtfirsttlastRR(RURR((Rtget_selection_indicescs cCs|idpt}t|S(Nttabs(RUR tTK_TABWIDTH_DEFAULTtcurrentR(RUR((Rt get_tabwidthnscCs`|i}|i|jo@|iidd|dd|id|}|id|ndS(NR;tmeasures -displayoftnR( RUR Rt newtabwidthttktcallR+tpixelst configure(RURR R((Rt set_tabwidthts    iiii2ii@KLcKsx|iD]\}}|djo ||_q |djo ||_q |djo ||_q |djo ||_q t d|fq WdS(Ntusetabst indentwidthttabwidthtcontext_use_ps1sbad option name: %r( RRMRRRURRRRtKeyError(RURRR((RRs         icCs}|ob|o[|i}d|jo djno ||_n|i|ijo d|_qin|i|idS(Niii( tguessRRUt guess_indentR|RRRR(RURRR|((RRs  c Cs|i}|i\} }| o/|o(|i| ||id| dSn|idd}|djo9|i dddo|idn |i dSn|dd jo|iddSn|i }t |i |} | d jpt| d |i|i}tiid d}d }xc||joPn|d }|d }t |i |} | |jp|dd joPq8q8W|i|id |d| |jo|idd|| n|idS(NRR1sinsert linestartR Rs1.0s insert-1cis iis s insert-%dcRm(RUR RRRRRRtcharstcompareRRRwt expandtabsthavetAssertionErrorRtwantREtps1Rtlast_line_of_promptt ncharsdeletedRRR( RUR2RRR RRRRRR((RRsH            c CsT|i}|i\} }|iz| oU|oNt| t|jo|i|Sn|i | ||i d| n|i dd}t ||i\}}|t|jo|i||inX|io d}n4t|i|i}|i}d|||}|id||iddSWd|iXdS(NRsinsert linestarts RmR1(RUR RRRRt index2lineRR2RRRRFt classifywsRtrawt effectiveRwt reindent_toRRtpadRRRR R( RUR2RRR RRRFRR((RRs.      cCs|i}|i\}} |iz}|o+| o$|i|| |id|n|idd} dt | } } x-| | jo| | djo| d} qW| | jo|i dddSn| | }d} tiidd}x>| o6| ddjo%| |jo| d } | d} qW| o|id | dnx(|iddjo|idq]W|i ddt|id}ti|i|i}x|iD]}t||d}t|d }|i|d}|i"||i#|i$|i%|}|dj p |djoPqqW|i(|pd|i)} | ti+jo| ti,jo|i d|n| ti-jo|i.|i/ng| ti0jo>|i1djo|i d|q6|i.|i2ndpt3d | fdSn|i4}|i d||i5o|i6|n&|o|i8o|i9|ndSWd|i:d|i;XdS( NRsinsert linestartis is R1isinsert - %d charss.0sbogus continuation type %r(<RUR RRRRRRRRRwR|RRtindentRERRRRRtlnotPyParsetParserRRRtnum_context_linestcontextRtstartatRt startatindextrawtexttset_strtfind_good_parse_startRt_build_char_in_string_functbodRtset_lotget_continuation_typetctC_NONEtC_STRINGt C_BRACKETRtcompute_bracket_indentt C_BACKSLASHtget_num_lines_in_stmttcompute_backslash_indentRtget_base_indent_stringtis_block_openerRR2tis_block_closerRR R(RUR2R RRR RRRRRRR|RRRR R((RRs~    %         cCs||id}|S(NcCs||d|S(Ns+%dc(t_icist _startindextoffset(RRR((Rtinneras(t startindexRURR(RURR((RR `sc Cs|i\}}}}xott|D][}||} | oDt | |i \}}||i}|i|| |||>(i2ii@KL(oRt __module__RRRRRJtTkintertToplevelRRRBRRRRRRiRRRRRRtRuRrRsRnRoRpRwRxRRyRzR|R{R}R~RvRRR4RR=R>RRARBRFRGR[RRaRR~RRRRRRRqR3RRRRmRRRRRRRRRjRRRRRRRRRRRRRRRRRRR RRRRRRRR-RR R$R#RR&R(((RR(s                             !           &                   %       - ! \      cCstt|S(N(RRR(R((RRscCsxd}}xa|D]Y}|djo|d}|d}q|djo |d}||d|}qPqW||fS(NiRmis (RRtstchR(R9RR:RR((RRs     R1cBs;tZdZdZeieid d Zd ZRS( NcCs6||_||_d|_|_d|_|_dS(Ni(R RURR|tfinishedRt blkopenlinet indentedline(RUR R((RR&s  cCsn|iodSn|id}|_t|d}|ii|ddodSn|ii||dS(NR is.0s>=R@s lineend+1c(RUR;R|RRR RR(RUR|R((RR8,s tclasstdeftfortifttrytwhilec Csf|ionU||jo||jo ||_n.||jo |io||_ d|_ndS(Ni( RUR;R8tNAMEttokentOPENERSRR<tINDENTR=( RUR8REtstartR@RRGRDRF((Rt tokeneater5s   cCsiti}|it_z7yti|i|iWntij onXWd|t_X|i |i fS(N( t _tokenizettabsizet save_tabsizeRURttokenizeR8RIt TokenErrorR<R=(RURL((RRAs    (R>R?R@RARBRC( RR6RR8RJRGRDRIR(((RR1s   cCs@|id}|djo|| ||d}n||fS(NRii(R9RR|(R9R|((RRQs t bracketleftt[t bracketrightt]tslasht/cCs|i|}|pdSn|d}tidd|}tidd|}tidd|}tidd |}tid d |}tid d |}tidd|}tidd|}tidd|}|S(NR is-[a-z]\bcCs|iiS(N(Rtgrouptupper(R((RR3ess\b\w+\bcCsti|i|iS(N(tkeynamesRRRU(R((RR3fssKey-tCancels Ctrl-BreaksControl-sCtrl-Rt+s>tquittmainloopR(RR RV((Rttestzs    t__main__($RERCRRt itertoolsRIR7RRR tidleverRYRRRRt configHandlerRQRRRRRRRRRRMRJR1RRWRYR^RdR(RR^RYRRRRRRJRYRMRdRgRRRRRER RR1RIRRRRRWRRQRRC((RR,sH                  2 !