a 9êdg ã@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 ú*/usr/local/lib/python3.9/idlelib/editor.pyÚ_sphinx_version%s r"c@s<eZdZddlmZddlmZmZddlm 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 „Z2gd!¢Z3d"d#„Z4d$d%„Z5d&d'„Z6d(d)„Z7d*d+„Z8dZ9d,d-„Z:d.gZ;d/d0„Zd5d6„Z?dÜd7d8„Z@dÝd9d:„ZAdÞd;d<„ZBdßd=d>„ZCd?d@„ZDdAdB„ZEdCdD„ZFdàdEdF„ZGdádGdH„ZHdIdJ„ZIdKdL„ZJdMdN„ZKdOdP„ZLdQdR„ZMdSdT„ZNdUdV„ZOdWdX„ZPdYdZ„ZQd[d\„ZRd]d^„ZSdâd_d`„ZTdãdadb„ZUdädcdd„ZVdedf„ZWdgdh„ZXdidj„ZYdkdl„ZZdmdn„Z[dodp„Z\dqdr„Z]dsdt„Z^e_j`e_jaduZbdvdw„Zcdxdy„Zddzd{„Zed|d}„Zfd~d„Zgd€d„Zhd‚dƒ„Zid„d…„Zjdåd†d‡„Zkdˆd‰„ZldŠd‹„ZmdŒd„ZndŽd„Zodd‘„Zpd’d“„Zqd”d•„Zrd–d—„Zsdæd™dš„Ztd›dœ„Zudçddž„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 CsL ddlm}tjdurtj 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%ƒ| fi|¤Ž|_&}|j&|j_'| (¡| )¡|j *d#|j+¡|j ,d$|j-¡t. /¡rx| ,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¡}|rT| Œdf¡}|dur(dg}|dkrB| ¡|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² r:| ³|¡|_‚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 ÚTextrFZfocused_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 vr~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)r r=©rrr:z Recent Files)r r 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@r r rr=r r r!rÀs,  ÿÿþzEditorWindow.createmenubarcCsJ|jd}| d¡}|dur 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_statecGsT|dkr ÿ        zEditorWindow.right_menu_event)ÚCloserKNcCsft|jdd}|jD]F}|d|d}}|durR|j|fdd„}|j||dq| ¡q||_dS)Nrr rUcSs| |¡dSrØ©Úevent_generate©rFr+r r r!rY$sz(EditorWindow.make_rmenu..command©r rY)rsrFr(Ú add_commandrÈr&)rÒr&r*r r+rYr r r!r's  zEditorWindow.make_rmenucCs| ¡SrØ)Úrmenu_check_copy©rÒr r r!Úrmenu_check_cut+szEditorWindow.rmenu_check_cutcCs6z|j d¡}Wnty$YdS0|r.dSdSdS)NrìreÚnormal©rFrÇr%)rÒZindxr r r!r2.s  zEditorWindow.rmenu_check_copycCs6z|jj d|jd¡Wnty,YdS0dSdS)Nztk::GetSelectionZ CLIPBOARDrer5)rFrÝÚcallr%r3r 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!rŽDszEditorWindow.config_dialogcCs"|jr|j}n|j}t |¡dSrM)rrrur Z show_idlehelp)rÒrPÚparentr r r!r‹Js  zEditorWindow.help_dialogc Csptjdd…dkr`zt |j¡Wqlty\}z"tjdt|ƒ|j dWYd}~qld}~00n t   |j¡dS)Nr:r;úDocument Start Failure©ÚtitleÚmessager9rN) 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!r‘us zEditorWindow.remove_selectioncs*|jj‰|jj‰d‰‡‡‡‡fdd„}|S)N)z sel.first+1cz sel.last-1ccs@|jd@dkr.move_at_edge)rFrÇr÷)rÒrErFr rDr!rzs z&EditorWindow.move_at_edge_if_selectioncCs|j d¡dS)Nz rNrCrÙr r r!ržŽs zEditorWindow.del_word_leftcCs|j d¡dS)NzrNrCrÙ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}|durP| 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_eventcCsnz|j dd¡ ¡}Wnty,d}Yn0t |jdd|¡j}|durj|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 ModuleNamerIrqrAr¹rÀ)rÒr@Ú file_pathr r r!Ú open_module¸s  ü zEditorWindow.open_modulecCs | ¡dSrM)rMrÙr r r!rÐszEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s,| ¡}|dur,dSddlm}| |j|¡dS)NZPyShellEditorWindowrNr)Úbrowser) r¹rÓÚ __class__Ú__name__rMÚidlelibrNZ ModuleBrowserrr)rÒrPrÓrNr r r!r£Ôs ÿ z EditorWindow.open_module_browsercCsddlm}| |j¡dS)Nr)Ú pathbrowserrN)rQrRZ PathBrowserrr)rÒrPrRr 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ÒrPrTÚcmdr r r!r¥äsþzEditorWindow.open_turtle_democCsN|durJ|dkrJ|j dd|¡|j ddd¡|j ddd¡| ¡dS)Nrrèz%d.0rêrërbz insert +1l)rFr÷rörøÚcenter)rÒrJr r r!Úgotolineís zEditorWindow.gotolinecCs`|rtj |¡rdStj tj |¡¡\}}tj |¡dvr@dS|j dd¡}| d¡o^d|vS)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_terminater3r 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Âr3r 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µr3r r r!Ú _addcolorizer s zEditorWindow._addcolorizercCs,|js dS|j ¡|j |j¡d|_dSrØ)r¼Z removecolorsr³rar3r r r!Ú _rmcolorizers  zEditorWindow._rmcolorizercCsH| ¡| ¡t |j¡|jdur0|j ¡|jdurD|j ¡dSrØ) rcrbr#r&rFr½Zupdate_highlight_colorsr¾Z update_colorsr3r r r!rÂs    zEditorWindow.ResetColorizerÚ_cCsp| d|¡| |¡}|r6||jvr6| 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|jdur|j ¡|jdur(|j ¡t |jdd¡}||jd<| ¡dS)NrAr#r\)r½Z update_fontr¾rrªrrrFr«)rÒZnew_fontr r r!Ú ResetFontBs     zEditorWindow.ResetFontcCs|t ¡|j_}| ¡D]\}}|jj|g|¢RŽq| ¡D]8}t |¡}|r>| ¡D]\}}|jj|g|¢RŽqXq>dSrØ) rÚGetCurrentKeySetr*Údefault_keydefsÚitemsrFZ event_deleteÚget_standard_extension_namesÚGetExtensionBindings)rÒÚkeydefsrPÚkeylistÚ extensionNameÚxkeydefsr r r!ÚRemoveKeybindingsSs  zEditorWindow.RemoveKeybindingsc CsBt ¡|j_}| ¡| ¡D]}t |¡}|r | |¡q i}|jjD]B}i||d<|dD](}|rb|d||dt|dƒd<qbqJ|j D]¨}|j |}|  t ¡}|dur¶q”|d7}t d|ƒD]r} |  | ¡dkrÈ| | d¡} | rÈ| | d¡} d} ||vr| ||vr||| } | rÈt|| ƒ} |j| | dqÈq”dS)NrrUrYÚ acceleratorr r>)rv)rrlr*rmr€rorpÚmenudefsr rÅrÇrrórEZ entrycgetÚget_acceleratorr) rÒrqrsrtZ menuEventDictr=r*Z menubarItemrbrÇZaccelZitemNamerPr r r!ÚApplyKeybindings_s<      $        zEditorWindow.ApplyKeybindingscCs|jstjddddd|_dS)NrAr]z num-spacesrCrD)r¬rr}r®r3r r r!r¯ƒs ÿz#EditorWindow.set_notabs_indentwidthcCs|t ¡}|jd}| t¡}||jkr8| |jd|¡|rn| ¡|D]$}| |d¡}|j |d|dqH||jd<dS)Nr rUrr0) rZGetAllExtraHelpSourcesListrÅrÇrrrrÈÚ"_EditorWindow__extra_help_callbackr1)rÒZ help_listZhelpmenuZhelpmenu_lengthÚentryrWr r r!rŠs   z$EditorWindow.reset_help_menu_entriescs|f‡fdd„ }|S)Nc s‚| d¡stj |¡}tjdd…dkrtzt |¡Wq~typ}z"tj dt |ƒˆj dWYd}~q~d}~00n t   |¡dS)N)ZwwwÚhttpr:r;r:r;)r\rhrirprrlr>r?rrËrõrFr@rA)ÚhelpfilerBr3r r!Údisplay_extra_helps   ÿz>EditorWindow.__extra_help_callback..display_extra_helpr )rÒr}r~r r3r!Z__extra_help_callback›s z"EditorWindow.__extra_help_callbackc sæg}|j}|rRtj |¡rRt|dddd}| ¡}Wdƒn1sH0Y|r„tj |¡d}||vrx| |¡| d|¡g‰|D]*}d|vs¬tj |dd…¡sŒˆ  |¡qŒ‡fd d „|Dƒ}d }|dt |ƒ…}|r~z@t|d ddd}|  |¡Wdƒn1s0YWnXt y|}z>t |jd dƒshd|j_tjdd|›d|jdWYd}~n d}~00|jjD]Z} | j} |  dt¡t|ƒD]8\} } |  ¡} |  | ¡} | j|| d| | ddq¤q†dS)NÚrÚutf_8r)r)Úerrorsrfrúrccsg|]}|ˆvr|‘qSr r )Ú.0ri©Z bad_pathsr r!Ú ½rRz9EditorWindow.update_recent_files_list..Z1234567890ABCDEFGHIJKÚwÚrecentfiles_messageFTz IDLE Warningz)Cannot save Recent Files list to disk. z Select OK to continue.r;ræ)r rYr )ryrhrir¿rAÚ readlinesÚabspathÚremoverèÚappendrôÚ writelinesr?rrrr‡rÚ showwarningrFrurxrrrÚ enumerateÚrstripÚ#_EditorWindow__recent_file_callbackr1)rÒÚnew_fileZrf_listrLZ 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¹rA)Z fn_closurer3r r!Úopen_recent_fileÙsz=EditorWindow.__recent_file_callback..open_recent_filer )rÒr•r—r r3r!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œr3r r r!rœïszEditorWindow.get_savedcCs|j |¡dSrØ)r´Ú set_saved)rÒÚflagr r r!ržòszEditorWindow.set_savedcCs|j ¡dSrØ)r´Ú reset_undor3r 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Ór3r r r!ršüszEditorWindow.long_titlecCs | ¡dSrM)rXrÙr r r!rŠÿsz EditorWindow.center_insert_eventrècCsH|j}| ¡\}}| |¡}||}td||dƒ}| t|ƒ¡dS)NrUr<)rFÚgetwindowlinesrÚmaxrr)rÒÚmarkrFruÚbotrJrHZnewtopr r r!rXs   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)r‚rÙr r r!r„szEditorWindow.close_eventcCsH|jrD| ¡s:|j ¡dkr&|j ¡|j ¡|j ¡|j ¡SdS)Nr5)r¹rœrurðZ deiconifyÚlowerZliftÚ maybesaver3r r r!r¬#s   zEditorWindow.maybesavecCs:z"| ¡}t|ƒdkr| ¡|WSty4Yn0dS)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_extensionsr‚r´r¼rFrwr³ruZdestroyr_r3r r r!r®5s"     zEditorWindow._closecCsi|_| ¡dSrØ)Ú extensionsÚload_standard_extensionsr3r 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 ¡Yq0qdS)NzFailed to load extension)roÚ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 GetExtensionsr3r r r!ro[sz)EditorWindow.get_standard_extension_namesZZzDummyZzzdummyc Cs6|j ||¡}z.command)r r rYrvÚvariable)r r rYrv) r*rwrmrÅrFrÆrÈr rxÚ get_var_objZ BooleanVarZadd_checkbuttonr1)rÒrwrqrÅrFZmnameZ entrylistr=r{r r+Z checkbuttonr rvrYÚ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 |¡vSdSdS)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¡}||fWSty6YdS0dS)Nrìrî)NNr6)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Ýr7ZmasterZ 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 vrŠ| d¡dS|j}t|  |¡ƒ}|d |j |j }d } ||j krÂqü|dd…}| d } t|  |¡ƒ}||ksü|dd vr¶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Ö|rb|rbt|ƒt|ƒkrJ|j |¡W| ¡S| ||¡| d|¡|  dd¡}t ||j ƒ\}}|t |ƒkrœ|  ||j¡n>|jr¨d}n&t | |j ¡ƒ}|j} d| || }| d|¡| d¡W| ¡dS| ¡0dS)NrèrärçrærN)rFrÐr¶Ú index2liner›rœr·rr÷rÆÚget_line_indentr­rôÚ reindent_tor®r¬rÙrèrù) rÒrPrFrürýÚprefixÚrawZ effectiveZpadrÕr r r!rš(s4  ì      þzEditorWindow.smart_indent_eventc Cs|j}| ¡\}}| ¡zä|r>|r>| ||¡| d|¡| dd¡}dt|ƒ}}||krv||dvrv|d7}qX||kr¢| dd¡W| d¡|  ¡dS|d|…}d}|râ|ddvrâ||j krâ|dd…}|d7}q²|rö| d |d¡| d¡dvr| d¡qö| dd¡t |  d¡ƒ} t  |j|j¡} |j s¾|jD]`} t| | dƒ} t| ƒd } | | d¡}|  |¡|  | | ¡¡}|dus¢| dkrJq¬qJ|  |p¸d¡n@| d d¡}|rÚ|d} nd } | | d¡}|  |¡|  d¡|  ¡}|t jkr¦|t jkr nn|t jkr:| d|¡nT|t jkrV| |  ¡¡n8|t j krŽ|  !¡dkr~| d|¡n| |  "¡¡nW| d¡|  ¡dS|  #¡}| d|¡|  $¡rÐ| %|¡n|rê|  &¡rê| '|¡W| d¡|  ¡dS| d¡|  ¡0dS) NrèrärrØrUrfrNrczinsert - %d charsrHZconsolerë)(rFrÐr¶rr÷rÆrô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 startatindexZrawtextZbodrrér r r!r™Ksœ       T «         ÿ            ò     ýÿ 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|jdurdS|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)”rPÚ __module__Ú __qualname__Zidlelib.percolatorr$Zidlelib.colorizerr%r&Z idlelib.undor'Zidlelib.iomenur(r)rQr*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 rrÊrrÏr¨r&r…r(r'r4r2r8rrŽr‹rŒr‡rˆr‰rr‘rržrŸr’r“r•r”r–r—rMrr£r¤r¥rYrÁr_r`rºrbrcrÂÚstringÚ ascii_lettersÚdigitsrgrjr±rkruryr¯rrzrÃrr¸rœržr r™ršrŠrXr¡rrªr„r¬r‚r®rÄr°r²ror¼rµr€rrÊ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>rUrHz>=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 ||vr ||_n||kr:|jr:||_d|_dS)NrU)rórôrõ) rÒrEÚtokenÚstartrbrúÚINDENTÚNAMEZOPENERSr r r!Ú tokeneater%szIndentSearcher.tokeneaterc Csltj}|jt_zHz$t |j¡}|D]}|j|Žq"WntjtfyLYn0W|t_n|t_0|j|j fSrØ) ÚtokenizeÚtabsizer­Úgenerate_tokensrörÚ TokenErrorÚ SyntaxErrorrôrõ)rÒZ save_tabsizeÚtokensrýr r r!r1s zIndentSearcher.runN) rPrërìr×rörrÿrrrr r r r!rés ý récCs6| d¡}|dkr.|d|…||dd…}||fS)NrdrrU)rG)Úsr”r r r!r Cs r ú[ú]ú/)Z bracketleftZ bracketrightZslashcCs´| |¡}|rt ¡r"|dvr"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>rSrTrLr>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 ý