U Å:âe ã@säddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Tddl m Z ddlmZddl mZddl mZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddl m!Z!ddlm"Z"dZ#de $¡Z%ejdkZ&dd„Z'Gdd„dƒZ(dd„Z)e *d¡Z+dd„Z,Gd d!„d!ƒZ-d"d#„Z.d$d%d&d'œZ/d(d)„Z0d*d+„Z1d,d-„Z2e3d.kràdd/l4m5Z5e5d0d1d2d3dd4l6m7Z7e7e2ƒdS)5éN)Ú*)ÚFont)Ú Scrollbar)Ú simpledialog)Ú messagebox)ÚidleConf)Ú configdialog)Úgrep)Úhelp)Ú help_about)Úmacosx)ÚMultiCallCreator)Úpyparse)Úquery)Úreplace)Úsearch)Ú wheel_event)Úwindowéz (%s)ÚdarwincCsbtj\}}}}}d||f}|d|f7}|dkrB|d|f7}n|dkr^|d|d|f7}|S)Nz%s%sz%sÚ candidatezrc%sÚfinalr)ÚsysÚ version_info)ÚmajorÚminorÚmicroÚlevelÚserialÚrelease©r ú3/usr/local/python38/lib/python3.8/idlelib/editor.pyÚ_sphinx_version%s r"c@sFeZdZddlmZddlmZmZddlm Z ddl m Z m Z ddl mZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZmZmZmZddl m!Z!ddl"m#Z#ddl$m%Z%e& '¡Z(dZ)dZ*dZ+dßdd„Z,dàdd„Z-dd„Z.dd„Z/dd„Z0dd„Z1dádd „Z2d!d"d#d$d%d&d'gZ3d(d)„Z4d*d+„Z5d,d-„Z6d.d/„Z7d0d1„Z8dZ9d2d3„Z:d4gZ;d5d6„Zd;d<„Z?dâd=d>„Z@dãd?d@„ZAdädAdB„ZBdådCdD„ZCdEdF„ZDdGdH„ZEdIdJ„ZFdædKdL„ZGdçdMdN„ZHdOdP„ZIdQdR„ZJdSdT„ZKdUdV„ZLdWdX„ZMdYdZ„ZNd[d\„ZOd]d^„ZPd_d`„ZQdadb„ZRdcdd„ZSdèdedf„ZTdédgdh„ZUdêdidj„ZVdkdl„ZWdmdn„ZXdodp„ZYdqdr„ZZdsdt„Z[dudv„Z\dwdx„Z]dydz„Z^e_j`e_jad{Zbd|d}„Zcd~d„Zdd€d„Zed‚dƒ„Zfd„d…„Zgd†d‡„Zhdˆd‰„ZidŠd‹„ZjdëdŒd„ZkdŽd„Zldd‘„Zmd’d“„Znd”d•„Zod–d—„Zpd˜d™„Zqdšd›„Zrdœd„ZsdìdŸd „Ztd¡d¢„Zudíd£d¤„Zvd¥d¦„Zwd§d¨„Zxd©dª„Zyd«d¬„Zzd­d®„Z{d¯d°„Z|d±d²„Z}d³d´„Z~dµd¶„Zd·d¸iZ€d¹dº„Zdîd»d¼„Z‚dïd½d¾„Zƒd¿dÀ„Z„dðdÁd„Z…dñdÃdÄ„Z†dÅdÆ„Z‡dÇdÈ„ZˆdÉdÊ„Z‰dËdÌ„ZŠdòdÍd΄Z‹dÏdЄZŒdÑdÒ„ZdÓdÔ„ZŽdÕdÖ„Zd×dØ„ZdÙdÚ„Z‘dÛdÜ„Z’dódÝdÞ„Z“dS)ôÚ EditorWindowr)Ú Percolator)ÚColorDelegatorÚ color_config)Ú UndoDelegator)Ú IOBindingÚencoding)Úmainmenu)ÚMultiStatusBar)Ú AutoComplete)Ú AutoExpand)ÚCalltip)Ú CodeContext)Ú LineNumbers)ÚFormatParagraphÚ FormatRegionÚIndentsÚRstrip)Ú ParenMatch)ÚSqueezer)Ú ZoomHeightNTc CsH ddlm}tjdkrtj tjdd¡}tj   d¡rvddtj dd…}tj  d ¡r^d }qÌd }tj ||dd¡}nVtj dd…d kr²tj tjdd t ƒ¡} tj | ¡rÌ| }ntj dkrÌtj tjd¡}tj |¡}tj |¡r|t_tj dkrdtjt_ndtj dd…t_||_|p*|j}||_t|ƒ|_tj||jd|_} |rl|j|_|j|j_ni|_i|j_tjotj tjd¡|_d|_t| ƒ|_ } t!| dd|_"} tj#ddddd} dddd| d tj#ddd!ddd"œ}t$t%ƒ| f|Ž|_&}|j&|j_'| (¡| )¡|j *d#|j+¡|j ,d$|j-¡t. /¡rt| ,d$|j-¡| ,d%|j0¡| ,d&|j0¡n| ,d'|j0¡| ,d(t1¡| ,d)t1¡| ,d*t1¡| ,d+|j2¡| ,d,|j3¡| ,d-|j4¡| ,d.|j5¡| ,d/|j6¡| ,d0|j7¡| ,d1|j8¡| ,d2|j9¡| ,d3|j:¡| ,d4|j;¡| ,d5d6d7„¡| ,d8|j<¡| ,d9|j=¡| ,d:|j>¡| ,d;|j?¡| ,d<|j@¡| ,d=|jA¡| ,d>|jB¡| ,d?|jC¡| ,d@|jD¡| ,dA|jE¡| ,dB|jF¡| G|¡|_H}| ,dC|jI¡| ,dD|jJ¡| ,dE|jK¡| ,dF|jL¡| ,dG|jM¡| ,dH|jN¡| O|¡}| ,dI|jP¡| ,dJ|jQ¡| ,dK| Rd¡¡| ,dL| RdM¡¡| ,dN|jS¡| ,dO|jT¡| ,dP|jU¡|r||j|<|rÔ||jV|<| ,dQ|jW¡| ,dR|jjX¡| ,dS|jY¡| ,dT|jZ¡| ,dU|j[¡| \¡| j]t^t_dMdV| j`dMdMdW| jadMdMdW|jb| dX<| jcdMdtddY| je|dZ<t f|jdd¡|d[<|jcdMdMtddY| g¡| h¡tj#dd\d]d^d}| |_id_|_j|jj|_k| l¡tmtd`ƒsð|j&dat_n| o¡db|_p| q|¡|_r}| s¡|_t}| u|¡|jv|_v|jw|_w| x|jy¡| z|¡|_{}| ||j}¡dc|_~| dc¡d|_€d|_d|_‚|rÚtj ƒ|¡rÊtj  |¡sÊ| „|¡rÚdd|_~| …|¡}| |¡n| †|¡dd|_~| ‡¡| y¡| ˆ¡| ‰¡|jŠ ‹de¡}|rP| Œdf¡}|dkr$dg}|dkr>| ¡|dM}||_Žt |j¡t‘j’|_’t“j”|_”t“j•|_•| –dhdi¡| –djdkdldm¡| –dndo¡| –dpdq¡| –drdqdsdt¡| —|¡}| ,dh|j˜¡| ,dj|j™¡| ,du|jš¡| ,dv| ›|¡jœ¡| ,dw| |¡jž¡| Ÿ|¡}| ,dx|j ¡| ,dr|j¡¡||ƒ}| ,dy|j¢¡| ,dz|j£¡| ,d{|j¤¡| ,d|| ¥|¡j¦¡| §|¡|_¨}| ,dn|j©¡| ,dp|jª¡| ,d}|j«¡| ,d~| ¬|¡j­¡|j®rè| ¯|¡|_| ,d|jj°¡n| ±d€dd‚¡|j² r6| ³|¡|_‚tj#dddƒd^d r&| ´¡| ,d„|j´¡n| ±d€d…d‚¡dS)†Nr)Ú ScriptBindingZDocz index.htmlÚlinuxz python-docs-z%s.%s.%séz/var/www/html/python/z/var/www/html/python/index.htmlz/usr/share/doc/Úwinz Python%s.chmrz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/é)Úmenuzrecent-files.lstÚÚvbar)ÚnameÚmainr#ÚwidthÚint©ÚtypeÚtextéZnoneZ wordprocessorÚheight)r@ÚpadxÚwrapZhighlightthicknessrBZtabstylerHZWM_DELETE_WINDOWú<>zz<2>z<3>z z z z z<>z<>z <>z<>z<>z<>z<>z<>ú<>z<>cSsdS©NÚbreakr ©Úeventr r r!Ú©óz'EditorWindow.__init__..z<>z<>z<>z<>z<>z<>z <>ú <>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<>ú<>zzéz<>z<>z<>z<>z<>z<>z<>z<>)ÚsideÚfillÚexpand)ZweightÚcommand)ÚrowÚcolumnZstickyZyscrollcommandÚfontÚIndentz use-spacesÚboolrÚblink_off_timeÚ insertofftime)é2iôi@KLFTrÚendéÿÿÿÿz<>z z<>zzzz<>zz<>zz<>zzz<>z<>z<>z<>z<>z<>z<>z <>z<>z<>z<>Úoptionsz *ode*ontextÚdisabledzline-numbers-defaultz<>ú *ine*umbers)µZidlelib.runscriptr8r#Úhelp_urlÚosÚpathÚjoinrÚ base_prefixÚplatformÚcountrÚisdirr"ÚisfileÚnormpathÚflistÚrootÚMenuÚmenubarrZListedToplevelÚtopÚvarsÚ tkinter_varsZ inversedictÚ instance_dictrZuserdirÚrecent_files_pathÚprompt_last_lineÚFrameÚ text_framerr?Ú GetOptionr ZTextrFZfocused_widgetÚ createmenubarÚapply_bindingsÚprotocolÚcloseÚbindÚ close_eventr ZisAquaTkÚright_menu_eventrÚhandle_winconfigÚcutÚcopyÚpasteÚcenter_insert_eventÚ help_dialogÚ python_docsÚ about_dialogÚ config_dialogÚopen_module_eventÚ select_allÚremove_selectionÚ find_eventÚfind_again_eventÚfind_in_files_eventÚfind_selection_eventÚ replace_eventÚgoto_line_eventÚsmart_backspace_eventÚnewline_and_indent_eventÚsmart_indent_eventr2ÚfregionÚindent_region_eventZdedent_region_eventZcomment_region_eventZuncomment_region_eventZtabify_region_eventZuntabify_region_eventr3Ztoggle_tabs_eventZchange_indentwidth_eventÚmove_at_edge_if_selectionÚ del_word_leftÚdel_word_rightÚ home_callbackÚdictÚ new_callbackZclose_all_callbackÚopen_module_browserÚopen_path_browserÚopen_turtle_demoÚset_status_barÚpackZLEFTZBOTHZ rowconfigureZcolumnconfigureÚ handle_yviewZgridZNSEWÚsetÚGetFontZ focus_setÚ set_widthÚusetabsÚtabwidthÚ indentwidthÚset_notabs_indentwidthÚhasattrr_Úupdate_cursor_blinkÚnum_context_linesr$Úperr'ÚundoÚ insertfilterÚundo_block_startÚundo_block_stopZset_saved_change_hookÚsaved_change_hookr(ÚioZset_filename_change_hookÚfilename_change_hookZ good_loadÚset_indentation_paramsÚcolorÚ code_contextÚ line_numbersÚexistsÚloadfileÚispythonsourceZ set_filenameÚResetColorizerÚupdate_recent_files_listÚload_extensionsÚmenudictÚgetÚindexÚ add_separatorÚ wmenu_endZregister_callbackÚpostwindowsmenurZ askintegerrZaskyesnoÚ showerrorÚ event_addr,Zautocomplete_eventZtry_open_completions_eventZforce_open_completions_eventr-Zexpand_word_eventr1Zformat_paragraph_eventr5Zflash_paren_eventZparen_closed_eventZcheck_module_eventZrun_module_eventZrun_custom_eventr4Z do_rstripr.ÚctipZtry_open_calltip_eventZrefresh_calltip_eventZforce_open_calltip_eventr7Zzoom_height_eventÚallow_code_contextr/Ztoggle_code_context_eventÚupdate_menu_stateÚallow_line_numbersr0Útoggle_line_numbers_event)ÚselfrqÚfilenameÚkeyrrr8ZdochomeZpyverZbasepathZchmfilerur|r?rBZ text_optionsrFršÚindentsZ usespacesr²r³r¸Ú is_py_srcr=rbZ autocompleteZ parenmatchZ scriptbindingrÌr r r!Ú__init__HsÒ     ÿ ÿ   ÿ   ÿ   ÿÿù            ÿ                ÿ  ÿ ÿÿ ÿ  ÿ ÿzEditorWindow.__init__cCs | ¡dS©N)rª©rÑrPr r r!r…`szEditorWindow.handle_winconfigcCs^|j}tt|jj| d¡| d¡gƒƒ}| ¡d|}t|| d¡d d¡}|||_ dS)NZborderrIr<r\)r\Ú0) rFÚsumÚmapÚtkZgetintZcgetZ winfo_widthrÚmeasurerB)rÑrFZ inner_paddingZ pixel_widthZzero_char_widthr r r!rªcsÿÿzEditorWindow.set_widthcCs|j ¡\}}|j |¡dSrM)r¸ZdefaultfilenamerqÚnew)rÑrPÚdirnameÚbasenamer r r!r¡ps zEditorWindow.new_callbackcCsÂ|jd@dkr|jdkrdS|j d¡rd|j ddd¡rd|j ddd¡rdt|j d¡ d¡d ƒ}n8|j dd¡}tt |ƒƒD]}||d kr~qœq~t |ƒ}t|j d ¡ d¡d ƒ}||krÂd}d t |ƒd }|jd @dkrò|j  ddd¡n²|j d¡s|j  dd ¡n@|j |j d¡d|j d ¡¡rB|j  dd¡n|j  dd¡|j |¡}|j d¡}|j |d|¡r„||}}|j  ddd¡|j  d||¡|j  d |¡|j d ¡dS)NérZHomeZiomarkú<=zinsert lineendúinsert linestartÚ.rU)ú ú Úinsertzinsert linestart+ÚcÚselú1.0rbú sel.firstZ my_anchorú<úsel.lastú>rN)ÚstateZkeysymrFrÆÚcomparerCÚsplitrÅÚrangeÚlenÚstrÚ tag_removeÚmark_setÚtag_addÚsee)rÑrPZinsertptÚlineZlineatÚdestÚfirstÚlastr r r!rŸusF ÿþ  ÿ    zEditorWindow.home_callbackcCs°| |j¡|_t|jdddd}tjdkr<|jjddtd|jjdd td|jjd d td|jjt t d |jt t d |j   d |j ¡|j  d dd¡|j  |j ¡dS)NrUZgrey75)rHZ borderwidthZ backgroundrZ _padding1z )rVr[zCol: ?rùzLn: ?)rVrWz<>z z)r+ruÚ status_barr{rrlÚ set_labelZRIGHTr¦ZBOTTOMÚXrFr‚Úset_line_and_columnrËZ after_idle)rÑÚsepr r r!r¥ s ÿzEditorWindow.set_status_barcCs>|j t¡ d¡\}}|j dd|¡|j dd|¡dS)Nrär[zCol: %srùzLn: %s)rFrÆZINSERTrñrýrþ)rÑrPrùr[r r r!r°sz EditorWindow.set_line_and_column)ÚfileZ_File)ÚeditZ_Edit)ÚformatZF_ormat)ÚrunZ_Run)rdZ_Options)rZ_Window)r Z_HelpcCsâ|j}i|_}|jD]N\}}t|ƒ\}}t||›ddƒ}t||d|d||<}|j|||dqt ¡r’t|ddd|d<}|jd|d |  ¡t|jdd |_ |jd j d d d|j d|jd  t ¡|_| ¡dS)NZ_menu_postcommandr)r@ÚtearoffÚ postcommand)Úlabelr=Ú underlineZapple)r@rZ applicationZIDLE)rr=©rrr:z Recent Files)rr r=r )rtrÄÚ menu_specsÚprepstrÚgetattrrsZ add_cascader Z isCarbonTkÚ fill_menusÚrecent_files_menuZinsert_cascaderÆÚENDÚbase_helpmenu_lengthÚreset_help_menu_entries)rÑZmbarrÄr@rr rr=r r r!r~Às,  ÿÿþzEditorWindow.createmenubarcCsJ|jd}| d¡}|dkr d}||jkr<| |jd|¡t |¡dS)NrrbrcrU)rÄrÆrÈÚdeleterZadd_windows_to_menu)rÑr=rbr r r!rÉÖs   zEditorWindow.postwindowsmenucCs|j|}|j||ddS)N)r©rÄÚ entryconfig)rÑr=rÆrÚmenuitemr r r!Úupdate_menu_labelàs zEditorWindow.update_menu_labelcCs|j|}|j||ddS)N©rïr)rÑr=rÆrïrr r r!rÎås zEditorWindow.update_menu_statecGsR|dkr ÿ      zEditorWindow.right_menu_event)ÚCloserKNcCsft|jdd}|jD]F}|d|d}}|dk rR|j|fdd„}|j||dq| ¡q||_dS)Nrr rUcSs| |¡dSrשÚevent_generate©rFr*r r r!rY$sz(EditorWindow.make_rmenu..command©rrY)rsrFr'Ú add_commandrÇr%)rÑr%r)rr*rYr r r!r&s  zEditorWindow.make_rmenucCs| ¡Sr×)Úrmenu_check_copy©rÑr r r!Úrmenu_check_cut+szEditorWindow.rmenu_check_cutcCs8z|j d¡}Wntk r&YdSX|r0dSdSdS)NrëreÚnormal©rFrÆr$)rÑZindxr r r!r1.s zEditorWindow.rmenu_check_copycCs8z|jj d|jd¡Wntk r.YdSXdSdS)Nztk::GetSelectionZ CLIPBOARDrer4)rFrÜÚcallr$r2r r r!Úrmenu_check_paste6s zEditorWindow.rmenu_check_pastecCst |j¡dSrM)r Z AboutDialogrurØr r r!rŒ>s zEditorWindow.about_dialogcCst |jd¡dS)NZSettingsrN)rZ ConfigDialogrurØr r r!rDszEditorWindow.config_dialogcCs"|jr|j}n|j}t |¡dSrM)rrrur Z show_idlehelp)rÑrPÚparentr r r!rŠJs  zEditorWindow.help_dialogc Csntjdd…dkr^zt |j¡Wqjtk rZ}ztjdt|ƒ|j dW5d}~XYqjXn t   |j¡dS)Nr:r;úDocument Start Failure©ÚtitleÚmessager8rN) rrlrhÚ startfilergÚOSErrorrrÊrôrFÚ webbrowserÚopen)rÑrPÚwhyr r r!r‹Tsÿ zEditorWindow.python_docscCs|j d¡dS)Nz<>rN©rFr-rØr r r!r†_s zEditorWindow.cutcCs |j d¡sdS|j d¡dS)Nréz<>rN)rFZ tag_rangesr-rØr r r!r‡cs  zEditorWindow.copycCs|j d¡|j d¡dS)Nz <>rçrN)rFr-rørØr r r!rˆjs  zEditorWindow.pastecCs.|j ddd¡|j dd¡|j d¡dS)Nrérêzend-1crçrN)rFr÷rörørØr r r!ros zEditorWindow.select_allcCs |j ddd¡|j d¡dS)NrérêrbrçrN)rFrõrørØr r r!rus zEditorWindow.remove_selectioncs*|jj‰|jj‰d‰‡‡‡‡fdd„}|S)N)z sel.first+1cz sel.last-1ccsB|jd@dkr>zˆdƒˆdˆˆƒWntk r<YnXdS)NrGrrërç)rïr$rO©Ú edge_indexZ edges_tableZself_text_indexZself_text_mark_setr r!Ú move_at_edge…s z.move_at_edge)rFrÆrö)rÑrDrEr rCr!rœzs z&EditorWindow.move_at_edge_if_selectioncCs|j d¡dS)Nz rNrBrØr r r!rŽs zEditorWindow.del_word_leftcCs|j d¡dS)NzrNrBrØr r r!rž’s zEditorWindow.del_word_rightcCst |j¡dSrM)rÚfindrFrØr r r!r‘–s zEditorWindow.find_eventcCst |j¡dSrM)rZ find_againrFrØr r r!r’šs zEditorWindow.find_again_eventcCst |j¡dSrM)rZfind_selectionrFrØr r r!r”žs z!EditorWindow.find_selection_eventcCst |j|j|j¡dSrM)r rFr¸rqrØr r r!r“¢sz EditorWindow.find_in_files_eventcCst |j¡dSrM)rrFrØr r r!r•¦s zEditorWindow.replace_eventcCsT|j}t |dd¡j}|dk rP| ddd¡| d|›d¡| d¡| ¡dS) Nz Go To Linez/Enter a positive integer ('big' = end of file):rérêrbrçú.0rN)rFrZGotoÚresultrõrörør)rÑrPrFÚlinenor r r!r–ªsþ zEditorWindow.goto_line_eventcCspz|j dd¡ ¡}Wntk r.d}YnXt |jdd|¡j}|dk rl|jr`|j |¡n |j   |¡|S)Nrërír>z Open ModulezAEnter the name of a Python module to search on sys.path and open:) rFrÅÚstripr$rZ ModuleNamerHrqr@r¸r¿)rÑr@Ú file_pathr r r!Ú open_module¸s ü zEditorWindow.open_modulecCs | ¡dSrM)rLrØr r r!rŽÐszEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s,| ¡}|dkr,dSddlm}| |j|¡dS)NZPyShellEditorWindowrNr)Úbrowser) r¸rÒÚ __class__Ú__name__rLÚidlelibrMZ ModuleBrowserrr)rÑrPrÒrMr r r!r¢Ôs ÿ z EditorWindow.open_module_browsercCsddlm}| |j¡dS)Nr)Ú pathbrowserrN)rPrQZ PathBrowserrr)rÑrPrQr r r!r£ßs  zEditorWindow.open_path_browsercCs&ddl}tjddg}|j|dddS)Nrz-cz,from turtledemo.__main__ import main; main()F)ÚshellrN)Ú subprocessrÚ executableÚPopen)rÑrPrSÚcmdr r r!r¤äsþzEditorWindow.open_turtle_democCsN|dk rJ|dkrJ|j dd|¡|j ddd¡|j ddd¡| ¡dS)Nrrçz%d.0rérêrbz insert +1l)rFrörõr÷Úcenter)rÑrIr r r!Úgotolineís zEditorWindow.gotolinecCs`|rtj |¡rdStj tj |¡¡\}}tj |¡dkr@dS|j dd¡}| d¡o^d|kS)NT)z.pyz.pywrêz 1.0 lineendz#!Zpython) rhrirnÚsplitextràÚnormcaserFrÅÚ startswith)rÑrÒÚbaseÚextrùr r r!rÀôszEditorWindow.ispythonsourcecCs|jr|j |¡d|_dSr×)rqZunregister_maybe_terminater2r r r!Ú close_hookýs zEditorWindow.close_hookcCs ||_dSr×)r^)rÑr^r r r!Úset_close_hookszEditorWindow.set_close_hookcCs2|jr|j |¡| ¡|j |¡| ¡dSr×)rqZfilename_changed_editr·ruZupdate_windowlist_registryrÁr2r r r!r¹s   z!EditorWindow.filename_change_hookcCsV|jr dS| |jj¡r"| ¡|_|jrR|j |j¡|j |j¡|j |j¡dSr×) r»rÀr¸rÒr%r²Ú removefilterr³r´r2r r r!Ú _addcolorizer s zEditorWindow._addcolorizercCs,|js dS|j ¡|j |j¡d|_dSr×)r»Z removecolorsr²r`r2r r r!Ú _rmcolorizers  zEditorWindow._rmcolorizercCsH| ¡| ¡t |j¡|jdk r0|j ¡|jdk rD|j ¡dSr×) rbrar#r&rFr¼Zupdate_highlight_colorsr½Z update_colorsr2r r r!rÁs    zEditorWindow.ResetColorizerÚ_cCsp| d|¡| |¡}|r6||jkr6| d|d|¡d| |¡krR| d|¡n| d|d¡| |¡dS)NÚERRORz wordstartÚ rçz+1c)r÷rÅÚ IDENTCHARSrörø)rÑrFÚposÚcharr r r!Úcolorize_syntax_error-s  z"EditorWindow.colorize_syntax_errorcCs2tjddddd}|s"d|jd<n tj|jd<dS)NrAr#z cursor-blinkr^rDrr`)rr}rFr_)rÑZ cursorblinkr r r!r°8sÿ z EditorWindow.update_cursor_blinkcCsN|jdk r|j ¡|jdk r(|j ¡t |jdd¡}||jd<| ¡dS)NrAr#r\)r¼Z update_fontr½rr©rrrFrª)rÑZnew_fontr r r!Ú ResetFontBs     zEditorWindow.ResetFontcCsxt ¡|j_}| ¡D]\}}|jj|f|žŽq| ¡D]6}t |¡}|r<| ¡D]\}}|jj|f|žŽqVq)ru)rrkr*rlrrnroÚmenudefsr rÄrÆrròrEZ entrycgetÚget_acceleratorr) rÑrprrrsZ menuEventDictr=r)Z menubarItemrbrÆZaccelZitemNamerPr r r!ÚApplyKeybindings_s<      $        zEditorWindow.ApplyKeybindingscCs|jstjddddd|_dS)NrAr]z num-spacesrCrD)r«rr}r­r2r r r!r®ƒs ÿz#EditorWindow.set_notabs_indentwidthcCs|t ¡}|jd}| t¡}||jkr8| |jd|¡|rn| ¡|D]$}| |d¡}|j |d|dqH||jd<dS)Nr rUrr/) rZGetAllExtraHelpSourcesListrÄrÆrrrrÇÚ"_EditorWindow__extra_help_callbackr0)rÑZ help_listZhelpmenuZhelpmenu_lengthÚentryrVr r r!rŠs   z$EditorWindow.reset_help_menu_entriescs|f‡fdd„ }|S)Nc s€| d¡stj |¡}tjdd…dkrrzt |¡Wq|tk rn}ztj dt |ƒˆj dW5d}~XYq|Xn t   |¡dS)N)ZwwwZhttpr:r;r9r:)r[rhrirprrlr=r>rrÊrôrFr?r@)ÚhelpfilerAr2r r!Údisplay_extra_helps  ÿz>EditorWindow.__extra_help_callback..display_extra_helpr )rÑr{r|r r2r!Z__extra_help_callback›s z"EditorWindow.__extra_help_callbackc sºg}|j}|r>tj |¡r>t|dddd}| ¡}W5QRX|rptj |¡d}||krd| |¡| d|¡g‰|D]*}d|ks˜tj |dd…¡sxˆ  |¡qx‡fd d „|Dƒ}d }|dt |ƒ…}|rRz*t|d ddd}|  |¡W5QRXWnVt k rP}z6t |jd dƒs@d|j_tjdd|›d|jdW5d}~XYnX|jjD]Z} | j} |  dt¡t|ƒD]8\} } |  ¡} |  | ¡} | j|| d| | ddqxqZdS)NÚrÚutf_8r)r)Úerrorsrerúrccsg|]}|ˆkr|‘qSr r )Ú.0ri©Z bad_pathsr r!Ú ½sz9EditorWindow.update_recent_files_list..Z1234567890ABCDEFGHIJKÚwÚrecentfiles_messageFTz IDLE Warningz)Cannot save Recent Files list to disk. z Select OK to continue.r:rå)rrYr )ryrhrir¾r@Ú readlinesÚabspathÚremoverçÚappendróÚ writelinesr>r rrr…rÚ showwarningrFrurxrrrÚ enumerateÚrstripÚ#_EditorWindow__recent_file_callbackr0)rÑÚnew_fileZrf_listrKZ rf_list_fileriZulcharsZrf_fileÚerrÚinstancer=ÚiÚ file_nameÚcallbackr r‚r!rªs\ÿ   ÿ ü   þz%EditorWindow.update_recent_files_listcs|f‡fdd„ }|S)Ncsˆjj|ddS)N)ZeditFile)r¸r@)Z fn_closurer2r r!Úopen_recent_fileÙsz=EditorWindow.__recent_file_callback..open_recent_filer )rÑr“r•r r2r!Z__recent_file_callbackØsz#EditorWindow.__recent_file_callbackcCs‚| ¡}| ¡}|r*|r*|d|t}n|r4|}n|r>|}nd}|pL|pL|}| ¡sfd|}d|}|j |¡|j |¡dS)Nz - Úuntitledz*%s*z*%s)Ú short_titleÚ long_titleÚ _py_versionÚ get_savedruZwm_titleZ wm_iconname)rÑZshortÚlongr;Ziconr r r!r·Ýs  zEditorWindow.saved_change_hookcCs |j ¡Sr×)r³ršr2r r r!ršïszEditorWindow.get_savedcCs|j |¡dSr×)r³Ú set_saved)rÑÚflagr r r!rœòszEditorWindow.set_savedcCs|j ¡dSr×)r³Ú reset_undor2r r r!ržõszEditorWindow.reset_undocCs|jj}|rtj |¡SdS)Nr–)r¸rÒrhrirà)rÑrÒr r r!r—øszEditorWindow.short_titlecCs |jjp dS)Nr>)r¸rÒr2r r r!r˜üszEditorWindow.long_titlecCs | ¡dSrM)rWrØr r r!r‰ÿsz EditorWindow.center_insert_eventrçcCsH|j}| ¡\}}| |¡}||}td||dƒ}| t|ƒ¡dS)NrUr<)rFÚgetwindowlinesrÚmaxrr)rÑÚmarkrFruÚbotrIrHZnewtopr r r!rWs   zEditorWindow.centercCsN|j}| d¡}| d¡}||krF| ¡dkrFt|dƒ}||d}||fS)Nrz@0,65535rUrH)rFrZ winfo_heightrC)rÑrFrur¢rHr r r!rŸ s    zEditorWindow.getwindowlinescCs|j}tt| |¡ƒƒSr×)rFrCrrÆ)rÑr¡rFr r r!rszEditorWindow.getlinenocCs(|j ¡}t d|¡}ttt| ¡ƒƒS)Nz(\d+)x(\d+)\+(-?\d+)\+(-?\d+))ruZ wm_geometryÚreÚmatchÚlistrÛrCÚgroups)rÑZgeomÚmr r r!Ú get_geometrys  zEditorWindow.get_geometrycCs | ¡dSrM)rrØr r r!rƒszEditorWindow.close_eventcCsH|jrD| ¡s:|j ¡dkr&|j ¡|j ¡|j ¡|j ¡SdS)Nr4)r¸ršrurïZ deiconifyÚlowerZliftÚ maybesaver2r r r!rª#s   zEditorWindow.maybesavecCs<z"| ¡}t|ƒdkr| ¡|WStk r6YnXdS)NÚcancel)rªrôÚ_closeÚAttributeError)rÑZreplyr r r!r,s zEditorWindow.closecCs|jjr|j|jjdt |j¡| ¡|j ¡d|_d|_|j rX|j  ¡d|_ d|_ d|_ |j  ¡d|_ |j  ¡|jrŒ| ¡dS)N)r)r¸rÒrÂrZunregister_callbackrÉÚunload_extensionsrr³r»rFrwr²ruZdestroyr^r2r r r!r¬5s"     zEditorWindow._closecCsi|_| ¡dSr×)Ú extensionsÚload_standard_extensionsr2r r r!rÃIszEditorWindow.load_extensionscCs0t|j ¡ƒD]}t|dƒr| ¡qi|_dS)Nr)r¥r¯Úvaluesr¯r)rÑÚinsr r r!r®Ms  zEditorWindow.unload_extensionscCsD| ¡D]6}z| |¡Wqtdt|ƒƒt ¡YqXqdS)NzFailed to load extension)rnÚload_extensionÚprintÚreprÚ tracebackÚ print_exc)rÑr@r r r!r°Ss  z%EditorWindow.load_standard_extensionscCs tjddS)NT)Z editor_only)rZ GetExtensionsr2r r r!rn[sz)EditorWindow.get_standard_extension_namesZZzDummyZzzdummyc Cs:|j ||¡}z>ztjd|td}Wn"ttfk rHt |¡}YnXWn tk rltd|ƒ‚YnXt||ƒ}t   |¡}t |dƒrš|  |j |¡||ƒ}||j|<|r6| |¡|D]t}| dd¡}|dd…dkrî|dd…}qÐ|d d…d kr|dd …}qî|d }t ||ƒrÀ|j |t||ƒ¡qÀdS) Nrä)Úpackagez Failed to import extension: rvú-rcrUrìrcrîZ_event)ÚextfilesrÅÚ importlibÚ import_moduleÚ __package__Ú ImportErrorÚ TypeErrorr´r rror¯rrvr¯rrrFr‚) rÑr@ZfnameÚmodÚclsrpr²ZveventZ methodnamer r r!r³bs4        zEditorWindow.load_extensioncCsF|dkr|jj}|j}||_| ¡D]\}}|r$|j|f|žŽq$dSr×)r*rlrFrprmrË)rÑrprFrPrqr r r!r~szEditorWindow.apply_bindingsc Csê|dkr|jj}|dkr |jj}|j}|j}|D]´\}}| |¡}|sHq0|D]–}|s^| ¡qL|\} } | dd…dk} | r†| dd…} t| ƒ\} } t|| ƒ} || fdd„}| rÐ|  | t ¡}|j | | || |dqL|j | | || dqLq0dS)NrUú!cSs| |¡dSr×r,r.r r r!rY sz(EditorWindow.fill_menus..command)rr rYruÚvariable)rr rYru) r*rvrlrÄrFrÅrÇr rwÚ get_var_objZ BooleanVarZadd_checkbuttonr0)rÑrvrprÄrFZmnameZ entrylistr=rzrr*Z checkbuttonr rurYÚvarr r r!r‡s>       þþzEditorWindow.fill_menuscCs&| |¡}|r| ¡}|St|ƒ‚dSr×)rÄrÅÚ NameError)rÑr@rÅÚvaluer r r!Úgetvar¬s  zEditorWindow.getvarcCs(| ||¡}|r| |¡nt|ƒ‚dSr×)rÄr¨rÆ)rÑr@rÇÚvartyperÅr r r!Úsetvar´s  zEditorWindow.setvarcCs,|j |¡}|s(|r(||jƒ|j|<}|Sr×)rwrÅrF)rÑr@rÉrÅr r r!rÄ»s zEditorWindow.get_var_objcCs,|jr$|j d|¡p"d|j |¡kSdSdS)NZTODOÚSTRINGrU)r»rFÚ tag_prevrangeZ tag_names)rÑZ text_indexr r r!Úis_char_in_stringËs ÿzEditorWindow.is_char_in_stringcCs>z"|j d¡}|j d¡}||fWStk r8YdSXdS)Nrërí)NNr5)rÑrûrür r r!Úget_selection_indices×s    z"EditorWindow.get_selection_indicescCs|jdp t}t|ƒS)NÚtabs)rFÚTK_TABWIDTH_DEFAULTrC)rÑÚcurrentr r r!Úget_tk_tabwidthâszEditorWindow.get_tk_tabwidthc CsB|j}| ¡|kr>|j dd|dd|jd|¡}|j|ddS)Nr\rÝz -displayofÚn)rÏ)rFrÒrÜr6ZmasterZ configure)rÑZ newtabwidthrFZpixelsr r r!Úset_tk_tabwidthès þzEditorWindow.set_tk_tabwidthcCsP|r@|r@| ¡}d|kr$dkr.nn||_|j|jkr@d|_| |j¡dS)Nr<rF)Ú guess_indentr­r¬r«rÔ)rÑrÕZguessr’r r r!rºós z#EditorWindow.set_indentation_paramsc Cs>|j}| ¡\}}|r6|r6| ||¡| d|¡dS| dd¡}|dkrp| ddd¡rd| d¡n| ¡dS|dd krŠ| d¡dS|j}t|  |¡ƒ}|d |j |j }d } ||j krÂqü|dd…}| d } t|  |¡ƒ}||ksü|dd kr¶qüq¶|  ¡| d | d¡||kr2|  dd ||¡| ¡dS)NrçrNrãr>rîrêz insert-1crcú rUrz insert-%dcrå)rFrÎrrörÅrðZbellr¬róÚ expandtabsr­rzrµrçr¶) rÑrPrFrûrüÚcharsr¬ZhaveZwantZ ncharsdeletedr r r!r—üs@          z"EditorWindow.smart_backspace_eventc Csô|j}| ¡\}}| ¡zÊ|r\|r\t|ƒt|ƒkrD|j |¡W¢¤S| ||¡| d|¡|  dd¡}t ||j ƒ\}}|t |ƒkr–|  ||j¡n>|jr¢d}n&t | |j ¡ƒ}|j} d| || }| d|¡| d¡W¢dS| ¡XdS)NrçrãrærårN)rFrÎrµr¶Ú index2lineršr›rrörÅÚget_line_indentr¬róÚ reindent_tor­r«r×rçrø) rÑrPrFrûrüÚprefixÚrawZ effectiveZpadrÓr r r!r™(s,       zEditorWindow.smart_indent_eventc Csì|j}| ¡\}}| ¡z¶|r>|r>| ||¡| d|¡| dd¡}dt|ƒ}}||krv||dkrv|d7}qX||kr”|  dd¡W¢DdS|d|…}d}|rÔ|ddkrÔ||j krÔ|dd…}|d7}q¤|rè| d |d¡| d¡dkr| d¡qè|  dd¡t |  d¡ƒ} t  |j|j¡} |j s°|jD]`} t| | dƒ} t| ƒd } | | d¡}|  |¡|  | | ¡¡}|dk s”| dkr<qžq<|  |pªd¡n@| d d¡}|rÌ|d} nd } | | d¡}|  |¡|  d¡|  ¡}|t jkrˆ|t jkrnn|t jkr,|  d|¡nT|t jkrH| |  ¡¡n8|t j kr€|  !¡dkrp|  d|¡n| |  "¡¡nW¢PdS|  #¡}|  d|¡|  $¡r²| %|¡n|rÌ|  &¡rÌ| '|¡W¢dS| d¡| ¡XdS) NrçrãrrÖrUrerNrczinsert - %d charsrGZconsolerê)(rFrÎrµrør¶rrörÅrórçrzrÙrÆrZParserr­r¬r±r rµZset_codeZfind_good_parse_startÚ_build_char_in_string_funcZset_lorÌZget_continuation_typeZC_NONEZC_STRING_FIRST_LINEZC_STRING_NEXT_LINESZ C_BRACKETrÛZcompute_bracket_indentZ C_BACKSLASHZget_num_lines_in_stmtZcompute_backslash_indentZget_base_indent_stringZis_block_openerr™Zis_block_closerr—)rÑrPrFrûrürùr’rÓÚindentÚlnor#ÚcontextZstartatZ startatindexZrawtextZbodr}rèr r r!r˜Ks†                 ÿ                z%EditorWindow.newline_and_indent_eventcCs||jfdd„}|S)NcSs||d|ƒS)Nz+%dcr )ÚoffsetZ _startindexZ_icisr r r!ÚinnerÂsz6EditorWindow._build_char_in_string_func..inner)rÍ)rÑZ startindexrãr r r!rÞÁsÿ z'EditorWindow._build_char_in_string_funccCs2|jr&t||jƒ\}}d|d|Sd|SdS)Nrærå)r«Údivmodr¬)rÑrÓZntabsZnspacesr r r!Ú _make_blanksÑszEditorWindow._make_blankscCsJ|j}| ¡| ddd¡r(| dd¡|r>| d| |¡¡| ¡dS)Nrãz!=rç)rFrµrðrrçrår¶)rÑr[rFr r r!rÛÛs zEditorWindow.reindent_tocCsPt|j|jƒ ¡\}}|r@|r@t||jƒ\}}t||jƒ\}}nd}}||S©Nr)ÚIndentSearcherrFr¬rrÚ)rÑÚopenerZindentedrÝZ indentsmallZ indentlarger r r!rÕés zEditorWindow.guess_indentcCsN|jdkrdS|jjr&|j ¡d}n|j ¡d}|jdd|›dddS)NZShowZHiderdrfz Line Numbers)r=rÆr)r½Zis_shownZ hide_sidebarZ show_sidebarr)rÑrPZ menu_labelr r r!rÐòs   ÿz&EditorWindow.toggle_line_numbers_event)NNNN)N)N)N)N)N)N)N)N)N)N)N)N)rç)rç)N)NN)N)N)T)N)”rOÚ __module__Ú __qualname__Zidlelib.percolatorr$Zidlelib.colorizerr%r&Z idlelib.undor'Zidlelib.iomenur(r)rPr*Zidlelib.statusbarr+Zidlelib.autocompleter,Zidlelib.autoexpandr-Zidlelib.calltipr.Zidlelib.codecontextr/Zidlelib.sidebarr0Zidlelib.formatr1r2r3r4Zidlelib.parenmatchr5Zidlelib.squeezerr6Zidlelib.zoomheightr7rÚgetfilesystemencodingZfilesystemencodingrgrÍrÏrÖr…rªr¡rŸr¥rr r~rÉrrÎr§r%r„r'r&r3r1r7rŒrrŠr‹r†r‡rˆrrrœrržr‘r’r”r“r•r–rLrŽr¢r£r¤rXrÀr^r_r¹rarbrÁÚstringÚ ascii_lettersÚdigitsrfrir°rjrtrxr®rryrÂrŽr·ršrœržr—r˜r‰rWrŸrr¨rƒrªrr¬rÃr®r°rnrºr³rrrÈrÊrÄrÍrÎrÒrÔrºr—r™r˜rÞrårÛrÕrÐr r r r!r#1s               + ù   %þ              $ .    ÿ %     ,#v  r#cCs tt|ƒƒSr×)rCr)rÆr r r!rÙsrÙz[ \t]*cCs$t |¡}| ¡t| ¡ |¡ƒfSr×)Ú_line_indent_rer¤rbróÚgroupr×)rùr¬r§r r r!rÚs rÚc@s8eZdZdd„Zdd„Zejejdfdd„Zdd „Z d S) rçcCs(||_||_d|_|_d|_|_dSræ)rFr¬r’ÚfinishedÚ blkopenlineÚ indentedline)rÑrFr¬r r r!rÖs zIndentSearcher.__init__cCsL|jr dS|jd}|_t|ƒd}|j |dd¡r:dS|j ||d¡S)Nr>rUrGz>=rbz lineend+1c)rñr’rµrFrðrÅ)rÑr’r¡r r r!Úreadlines zIndentSearcher.readline)ÚclassÚdefÚforÚifÚtryÚwhilec Cs>|jrn2||kr ||kr ||_n||kr:|jr:||_d|_dS)NrU)rñròró) rÑrEÚtokenÚstartrbrùÚINDENTÚNAMEZOPENERSr r r!Ú tokeneater%szIndentSearcher.tokeneaterc Cshtj}|jt_zDz$t |j¡}|D]}|j|Žq"Wntjtfk rNYnXW5|t_X|j|j fSr×) ÚtokenizeÚtabsizer¬Úgenerate_tokensrôrÿÚ TokenErrorÚ SyntaxErrorròró)rÑZ save_tabsizeÚtokensrûr r r!r1s  zIndentSearcher.runN) rOrérêrÖrôrrýrþrÿrr r r r!rçs ý rçcCs6| d¡}|dkr.|d|…||dd…}||fS)NrcrrU)rF)Úsr’r r r!r Cs r ú[ú]ú/)Z bracketleftZ bracketrightZslashcCs´| |¡}|rt ¡r"|dkr"dS|d}t ddd„|¡}t ddd„|¡}t d d|¡}t d d |¡}t d d |¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}|S)N>rTrSrLr>rz-[a-z]\bcSs | ¡ ¡Sr×)rðÚupper©r§r r r!rQ\rRz!get_accelerator..z\b\w+\bcSst | ¡| ¡¡Sr×)ÚkeynamesrÅrðr r r r!rQ]rRzKey-ZCancelz Ctrl-BreakzControl-zCtrl-r¹ú+z>sx                    Z  4 ý