Ë çsƒ[KdNãóL—ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl ­ddl m Z ddlmZddl mZddl mZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddlm$Z$dZ%dejL«zZ'ejdk(Z(d„Z)Gd„d«Z*d„Z+ejXd«Z-d„Z.Gd„d«Z/d „Z0d!d"d#d$œZ1d%„Z2d&„Z3d'„Z4e5d(k(r dd)l6m7Z7e7d*d+d,¬-«dd.l8m9Z9e9e4«yy)/éN)Ú*)ÚFont)Ú Scrollbar)Ú simpledialog)Ú messagebox)ÚidleConf)Ú configdialog)Úgrep)Úhelp)Ú help_about)Úmacosx)ÚMultiCallCreator)Úpyparse)Úquery)Úreplace)Úsearch)Ú wheel_event)Ú py_extensions)Úwindowéz (%s)ÚdarwincóŠ—tj\}}}}}|›|›�}||›z }|dk(r |d|›�z }|S|dk7r ||d›|›�z }|S)zYFormat sys.version_info to produce the Sphinx version string used to install the chm docsÚ candidateÚrcÚfinalr)ÚsysÚ version_info)ÚmajorÚminorÚmicroÚlevelÚserialÚreleases ú%/usr/lib/python3.12/idlelib/editor.pyÚ_sphinx_versionr%&sw€ä),×)9Ñ)9Ñ&€Eˆ5�%˜ à�˜�wЀGØ �%�Ñ€GØ � ÒØ�R˜�x�=Ñ ˆð €Nð �'Ò Ø�e˜A‘h�Z ˜xÐ(Ñ(ˆØ €Nócó¸—eZdZddlmZddlmZmZddlm Z ddl m Z m Z ddl mZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZmZmZmZddl m!Z!ddl"m#Z#e$jJ«Z&dZ'dZ(dZ)dZ*dwd„Z+dxd„Z,d„Z-d„Z.d„Z/d„Z0dxd„Z1 gd¢Z2d„Z3d„Z4d„Z5d„Z6d„Z7dZ8d„Z9d gZ:d!„Z;d"„Zdxd%„Z?dxd&„Z@dxd'„ZAdxd(„ZBd)„ZCd*„ZDd+„ZEdxd,„ZFdxd-„ZGd.„ZHd/„ZId0„ZJd1„ZKd2„ZLd3„ZMd4„ZNd5„ZOd6„ZPd7„ZQd8„ZRdxd9„ZSdxd:„ZTdxd;„ZUd<„ZVd=„ZWd>„ZXd?„ZYd@„ZZdA„Z[dB„Z\dC„Z]e^j¾e^jÀzdDzZadE„ZbdF„ZcdG„ZddH„ZedI„ZfdJ„ZgdK„ZhdL„ZidxdM„ZjdN„ZkdO„ZldP„ZmdQ„ZndR„ZodS„ZpdT„ZqdU„ZrdydV„ZsdW„ZtdydX„ZudY„ZvdZ„Zwd[„Zxd\„Zyd]„Zzd^„Z{d_„Z|d`„Z}da„Z~dbdciZdd„Z€dxde„Z�dzdf„Z‚dg„Zƒdxdh„Z„dxdi„Z…dj„Z†dk„Z‡dl„Zˆdm„Z‰d{dn„ZŠdo„Z‹dp„ZŒdq„Z�dr„ZŽds„Z�dt„Z�du„Z‘dxdv„Z’y)|Ú EditorWindowr)Ú Percolator)ÚColorDelegatorÚ color_config)Ú UndoDelegator)Ú IOBindingÚencoding)Úmainmenu)ÚMultiStatusBar)Ú AutoComplete)Ú AutoExpand)ÚCalltip)Ú CodeContext)Ú LineNumbers)ÚFormatParagraphÚ FormatRegionÚIndentsÚRstrip)Ú ParenMatch)Ú ZoomHeightNTc ód"—ddlm}tj�€ötj j tjdd«}tjjd«r`ddtjddzz}tj jd «rd }nÕd }tj j ||dd«}n°tjddd k(rYddl } d } dtj›d�} | j| j | «} tj j'| «rD| }nAtjdk(r.tj j tjd«}tj j)|«}tj j'|«r;|t_tjdk(r|jŽ«|jcd?|j�«|jcd@|j’«|jcdA|j”«|jcdB|j–«|jcdC|j˜«|j›|«x|_N}|jcdD|jž«|jcdE|j «|jcdF|j¢«|jcdG|j¤«|jcdH|j¦«|jcdI|j¨«|j«|«}|jcdJ|j¬«|jcdK|j®«|jcdL|j±d««|jcdM|j±dN««|jcdO|j²«|jcdP|j´«|jcdQ|j¶«|r¶||j<|<|r||j¸|<|jcdR|jº«|jcdS|j*j¼«|jcdT|j¾«|jcdU|jÀ«|jcdV|j«|jÅ«| jÇtÈtÊdN¬W«| jÍdNdN¬X«| jÏdNdN¬X«|jÐ|dY<|jÓdNdtÔ¬Z«|jÖ|d[<tAjØ|j,dd«|d\<|jÓdNdNtÔ¬Z«|jÛ«|jÝ«tAjPdd]d^d_¬«}| |_od`|_p|jà|_q|jå«tçt@da«s|jVdbt@_t|jë«dc|_v|jï|«x|_x}|jó«x|_z}|j÷|«|jø|_||jú|_}|jý|jþ«|�j|«x|_�}|�j|�j«dd|_„|�j dd«d|_†d|_‡d|_ˆ|r–tj �j|«r]tj j|«s>|�j|«rEde|_„|�j|«}|�j |«n|�j|«de|_„|�j«|jÿ«|�j«|�j«|�j �j#df«}|rY|�j%dg«}|€dh}|dk\r|�j'«|dNz}||_”t3�j*|�j,«�t.�j0|_˜�t2�j4|_š�t2�j6|_›|�j9didj«|�j9dkdldmdn«|�j9dodp«|�j9dqdr«|�j9dsdrdtdu«|�j;||�j<«}|jcdi|�j>«|jcdk|�j@«|jcdv|�jB«|jcdw|�jE|«�jF«|jcdx|�jI|«�jJ«|�jM|«}|jcdy|�jN«|jcds|�jP«||«}|jcdz|�jR«|jcd{|�jT«|jcd||�jV«|jcd}|�jY|«�jZ«|�j]|«x|_¯}|jcdo|�j`«|jcdq|�jb«|jcd~|�jd«|jcd|�jg|«�jh«|�jjr@|�jm|«|_‡|jcd€|�j�jn«n|�jqd�d‚dƒ«|�jrr_|�ju|«|_ˆtAjPddd„d_¬«r|�jw«|jcd…|�jv«y|�jqd�d†dƒ«y#t"$r1 | j| j$| «} n#t"$rYnwxYwY�ŒwxYw)‡Nr)Ú ScriptBindingÚDocz index.htmlÚlinuxz python-docs-z%s.%s.%séz/var/www/html/python/z/var/www/html/python/index.htmlz/usr/share/doc/ÚwinÚzSoftware\Python\PythonCore\z\Help\Main Python Documentationrz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/é)Úmenuzrecent-files.lstÚvbar)ÚnameÚmainr(ÚwidthÚint©ÚtypeÚtextéÚnoneÚ wordprocessorÚheight)rFÚpadxÚwrapÚhighlightthicknessrHÚtabstylerPÚWM_DELETE_WINDOWú<>zz<2>z<3>z Úx11z z z z<>z<>z <>z<>z<>z<>z<>z<>ú<>z<>có—y©NÚbreak©)Úevents r$Úz'EditorWindow.__init__..¶s€°'r&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)ÚweightÚcommand)ÚrowÚcolumnÚstickyÚyscrollcommandÚ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)¼Úidlelib.runscriptr=r(Úhelp_urlÚosÚpathÚjoinrÚ base_prefixÚplatformÚcountrÚisdirÚwinregÚwinverÚ QueryValueÚHKEY_CURRENT_USERÚFileNotFoundErrorÚHKEY_LOCAL_MACHINEÚisfileÚnormpathÚflistÚrootÚMenuÚmenubarrÚListedToplevelÚtopÚvarsÚ tkinter_varsÚ inversedictÚ instance_dictrÚuserdirÚrecent_files_pathÚprompt_last_lineÚFrameÚ text_framerrEÚ GetOptionrÚTextrLÚfocused_widgetÚ createmenubarÚapply_bindingsÚprotocolÚcloseÚbindÚ close_eventr ÚisAquaTkÚright_menu_eventrÚ_windowingsystemÚ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_eventr7ÚfregionÚindent_region_eventÚdedent_region_eventÚcomment_region_eventÚuncomment_region_eventÚtabify_region_eventÚuntabify_region_eventr8Útoggle_tabs_eventÚchange_indentwidth_eventÚmove_at_edge_if_selectionÚ del_word_leftÚdel_word_rightÚ home_callbackÚdictÚ new_callbackÚclose_all_callbackÚopen_module_browserÚopen_path_browserÚopen_turtle_demoÚset_status_barÚpackÚLEFTÚBOTHÚ rowconfigureÚcolumnconfigureÚ handle_yviewÚgridÚNSEWÚsetÚGetFontÚ focus_setÚ set_widthÚusetabsÚtabwidthÚ indentwidthÚset_notabs_indentwidthÚhasattrrnÚupdate_cursor_blinkÚnum_context_linesr)Úperr,ÚundoÚ insertfilterÚundo_block_startÚundo_block_stopÚset_saved_change_hookÚsaved_change_hookr-ÚioÚset_filename_change_hookÚfilename_change_hookÚ good_loadÚset_indentation_paramsÚcolorÚ code_contextÚ line_numbersÚexistsÚloadfileÚispythonsourceÚ set_filenameÚResetColorizerÚupdate_recent_files_listÚload_extensionsÚmenudictÚgetÚindexÚ add_separatorÚ wmenu_endÚregister_callbackÚpostwindowsmenurÚ askintegerrÚaskyesnoÚ showerrorÚ event_addr1Úuser_input_insert_tagsÚautocomplete_eventÚtry_open_completions_eventÚforce_open_completions_eventr2Úexpand_word_eventr6Úformat_paragraph_eventr:Úflash_paren_eventÚparen_closed_eventÚcheck_module_eventÚrun_module_eventÚrun_custom_eventr9Ú do_rstripr3ÚctipÚtry_open_calltip_eventÚrefresh_calltip_eventÚforce_open_calltip_eventr;Úzoom_height_eventÚallow_code_contextr4Útoggle_code_context_eventÚupdate_menu_stateÚallow_line_numbersr5Útoggle_line_numbers_event)Úselfr‡ÚfilenameÚkeyrˆr=ÚdochomeÚpyverÚbasepathrÚdocfileÚKEYrŒr•rErHÚ text_optionsrLr·ÚindentsÚ usespacesrÞrßråÚ is_py_srcrDrqÚ autocompleteÚ parenmatchÚ scriptbindingr s r$Ú__init__zEditorWindow.__init__Js[ €å3ä × Ñ Ñ (Ü—w‘w—|‘|¤C§O¡O°U¸LÓIˆGÜ�|‰|×!Ñ! 'Ô*à&¨´c×6FÑ6FÀrÈÐ6JÑ)JÑJ�Ü—7‘7—=‘=Ð!8Ô9Ø?‘Gà0�HÜ Ÿg™gŸl™l¨8°UØ+0°,ó@‘Gä—‘˜b˜qÐ! UÒ*ÛØ�Ø5´c·j±j°\Ø:ð;�ðØ$×/Ñ/°×0HÑ0HÈ#ÓN�Gô—7‘7—>‘> 'Ô*Ø%‘GÜ—‘ Ò)äŸ'™'Ÿ,™,¤s§¡ØJóL�ä—g‘g×&Ñ& wÓ/ˆGÜ�w‰w�~‰~˜gÔ&Ø(/” Ô%Ü—<‘< 8Ò+à,5¼ ×8MÑ8MÑ,M”LÕ)à)IÜ+.×+;Ñ+;¸B¸QÐ+?ñ*@” Ô%àˆŒ ØÒ!�u—z‘zˆØˆŒ ܘD“zˆŒ Ü×.Ñ.¨t¸$¿,¹,ÔGÐGˆŒ�3Ù Ø %§ ¡ ˆDÔ ð&+×%6Ñ%6ˆD�H‰HÕ "à "ˆDÔ à%'ˆD�H‰HÔ "Ü!)×!1Ñ!1ò"6´b·g±g·l±lÜ× Ñ Ð"4ó76ˆÔð!#ˆÔÜ',¨S£zÐ1ˆŒ˜*Ü$ Z°fÔ=Ð=ˆŒ �DÜ×"Ñ" 6¨>¸7ÈÔOˆàØØØ&'ØØ+Ü"×,Ñ,Ø °¸uôFñ ˆ ð2Ô+¬DÓ1°*ÑMÀ ÑMÐMˆŒ �DØ"&§)¡)ˆ�‰Ôà ×ÑÔØ ×ÑÔà �‰×ÑÐ,¨d¯j©jÔ9Ø �‰� ‰ Ð(¨$×*:Ñ*:Ô;Ü �?‰?Ô à �I‰IÐ(¨$×*:Ñ*:Ô ;ð �I‰IÐ*¨4×+@Ñ+@Ô AØ �I‰I�e˜T×2Ñ2Õ 3ð �I‰I�e˜D×1Ñ1Ô 2à � ‰ �.¤+Ô.Ø × Ñ  EÒ )Ø �I‰I�l¤KÔ 0Ø �I‰I�l¤KÔ 0Ø � ‰ �- ×!6Ñ!6Ô7Ø � ‰ �)˜TŸX™XÔ&Ø � ‰ �*˜dŸi™iÔ(Ø � ‰ �+˜tŸz™zÔ*Ø � ‰ Ð% t×'?Ñ'?Ô@Ø � ‰ �*˜d×.Ñ.Ô/Ø � ‰ Ð# T×%5Ñ%5Ô6Ø � ‰ Ð" D×$5Ñ$5Ô6Ø � ‰ Ð*¨D×,>Ñ,>Ô?Ø � ‰ Ð# T×%;Ñ%;Ô<Ø � ‰ Ð"Ñ$9Ô:Ø � ‰ Ð" D§O¡OÔ4Ø � ‰ Ð(¨$×*?Ñ*?Ô@Ø � ‰ �*˜dŸo™oÔ.Ø � ‰ Ð" D×$9Ñ$9Ô:Ø � ‰ Ð% t×'?Ñ'?Ô@Ø � ‰ Ð&¨×(AÑ(AÔBØ � ‰ �- ×!3Ñ!3Ô4Ø � ‰ �/ 4×#7Ñ#7Ô8Ø � ‰ Ð'¨×(BÑ(BÔCØ � ‰ Ð*¨4×+HÑ+HÔIØ � ‰ Ð$ T×%<Ñ%<Ô=Ø!%×!2Ñ!2°4Ó!8Ð8ˆŒ �wà � ‰ Ð% w×'BÑ'BÔCØ � ‰ Ð% w×'BÑ'BÔCØ � ‰ Ð&¨×(DÑ(DÔEØ � ‰ Ð(¨'×*HÑ*HÔIØ � ‰ Ð% w×'BÑ'BÔCØ � ‰ Ð'¨×)FÑ)FÔGØ—,‘,˜tÓ$ˆØ � ‰ Ð# W×%>Ñ%>Ô?Ø � ‰ Ð*¨G×,LÑ,LÔMØ � ‰ �(˜D×:Ñ:¸1Ó=Ô>Ø � ‰ �)˜T×;Ñ;¸AÓ>Ô?Ø � ‰ Ð% t×'9Ñ'9Ô:Ø � ‰ Ð&¨×(;Ñ(;Ô<Ø � ‰ Ð)¨4×+=Ñ+=Ô>á Ø&)ˆE× Ñ ˜dÑ #ÙØ"&�— ‘ ˜3‘Ø �I‰IÐ+¨T×->Ñ->Ô ?Ø �I‰IÐ-¨t¯z©z×/LÑ/LÔ MØ �I‰IÐ.°×0HÑ0HÔ IØ �I‰IÐ-¨t×/EÑ/EÔ FØ �I‰IÐ,¨d×.CÑ.CÔ Dà ×ÑÔØ�‰œT¬°QˆÔ7Ø×Ñ ¨!ÐÔ,Ø×"Ñ" 1¨QÐ"Ô/Ø×+Ñ+ˆˆY‰Ø � ‰ �a ¬$ˆ Ô/Ø!%§¡ˆÐ ÑÜ×'Ñ'¨¯ © °6¸>ÓJˆˆV‰ Ø � ‰ �a ¬$ˆ Ô/Ø �‰ÔØ �‰Ôô×&Ñ& v¨xØ'3¸&ôBˆ à$�}ˆŒ ðˆŒ ð Ÿ=™=ˆÔØ ×#Ñ#Ô%ô”xÐ!1Ô2Ø&*§i¡i°Ñ&@ŒHÔ #Ø × Ñ Ô"ð"2ˆÔØŸ™¨Ó.Ð.ˆŒ�3Ø×-Ñ-Ó/Ð/ˆŒ �DØ ×Ñ˜ÔØ $× 5Ñ 5ˆÔØ#×3Ñ3ˆÔØ ×"Ñ" 4×#9Ñ#9Ô:à—~’~ dÓ+Ð+ˆŒ�"Ø ×#Ò# D×$=Ò$=Ô>؈ŒØ ×#Ò# EÔ*؈Œ Ø ˆÔØ ˆÔÙ Ü�w‰w�~Š~˜hÔ'´·±· ± ¸hÔ0GØ—;’;˜xÔ(Ø%)�D”NØ $× 3Ò 3°HÓ =�IØ×/Ò/° Õ:à—’ Ô)Ø!%�”à ×ÒÔØ ×ÑÔ Ø ×%Ò%Ô'Ø ×ÒÔØ�}Š}× Ò  Ó*ˆÙ Ø—*’*˜UÓ#ˆC؈{Ø�Ø�aŠxØ×"Ò"Ô$ؘA‘g�Ø ˆDŒNÜ × $Ò $ T×%9Ò%9Ô :õ'×1Ò1ˆŒÝ"×+Ò+ˆŒ Ý#×-Ò-ˆŒð �ŠÐ)¨;Ô7Ø �ŠÐ1Ð3HØ+Ð-Eô Gà �ŠÐ-Ð/GÔHØ �ŠÐ,Ð.GÔHØ �ŠÐ)Ð+DØ2Ð4Mô Oð ×(Ò(¨¨t×/JÒ/JÓKˆ Ø � ‰ Ð$ l×&EÒ&EÔFØ � ‰ Ð,Ø×9Ò9ô ;à � ‰ Ð.Ø×;Ò;ô =à � ‰ Ð# T§_¢_°TÓ%:×%LÒ%LÔMØ � ‰ Ð(Ø×&Ò& tÓ,×CÒCô Eà—_’_ TÓ*ˆ Ø � ‰ Ð# Z×%AÒ%AÔBØ � ‰ Ð$ j×&CÒ&CÔDÙ% dÓ+ˆ Ø � ‰ Ð$ m×&FÒ&FÔGØ � ‰ Ð" M×$BÒ$BÔCØ � ‰ Ð" M×$BÒ$BÔCØ � ‰ �/ 4§;¢;¨tÓ#4×#>Ò#>Ô?ØŸ<š<¨Ó-Ð-ˆŒ �DØ � ‰ Ð(¨$×*EÒ*EÔFà � ‰ Ð'¨×)CÒ)CÔDØ � ‰ Ð*¨D×,IÒ,IÔJØ � ‰ Ð# T§_¢_°TÓ%:×%LÒ%LÔMØ × "Ó "Ø $× 0Ò 0°Ó 6ˆDÔ Ø �I‰IÐ/Ø×'Ò'×AÒAõ Cð × "Ò " 9¨m¸ZÔ HØ × "Ó "Ø $× 0Ò 0°Ó 6ˆDÔ Ü×!Ñ! &¨.Ø"8¸võGà×.Ò.Ô0Ø �I‰IÐ/°×1OÒ1OÕ Pà × "Ò " 9¨m¸ZÕ HøôW)òðØ"(×"3Ñ"3°F×4MÑ4MØ47ó#9™øä,òÙðýð úsGÃ7AC5ÁC5 AD/ÁC?ADÁDAD/ÁD AD(ÁD%AD/ÁD'AD(ÁD(AD/ÁD.AD/có$—|j«y©N)rÖ©rr]s r$r¢zEditorWindow.handle_winconfigms €Ø �‰Õr&c óD—|j}tt|jj|j d«|j d«g««}|j «d|zz }t||j d«¬«jd«}||z|_ y)NÚborderrQrCrk)rkÚ0) rLÚsumÚmapÚtkÚgetintÚcgetÚ winfo_widthrÚmeasurerH)rrLÚ inner_paddingÚ pixel_widthÚzero_char_widths r$rÖzEditorWindow.set_widthpsŽ€Ø�y‰yˆÜœC §¡§¡°·±¸8Ó1DØ15·±¸6Ó1Bð1DóEóFˆ à×&Ñ&Ó(¨1¨}Ñ+<Ñ<ˆ ô �˜DŸI™I fÓ-Ô .× 6Ñ 6°sÓ ;ð à  OÑ3ˆ� r&cót—|jj«\}}|jj|«yrZ)råÚdefaultfilenamer‡Únew)rr]ÚdirnameÚbasenames r$rÅzEditorWindow.new_callback}s,€Ø ŸG™G×3Ñ3Ó5ш�Ø � ‰ �‰�wÔØr&có—|jdzdk7r|jdk(ry|jjd«rq|jj ddd«rT|jj ddd«r7t |jjd«j d«d «}nI|jjdd«}tt|««D] }||d vsŒ n t|«}t |jjd «j d«d «}||k(rd}d t|«zd z}|jd zdk(r|jjddd«�nQ|jjd«s|jjdd «nˆ|jj |jjd«d|jjd ««r|jjdd«n|jjdd«|jj|«}|jjd«}|jj |d|«r||}}|jjddd«|jjd||«|jjd |«|jjd «y)NérÚHomeÚiomarkú<=zinsert lineendúinsert linestartÚ.ra)Ú Ú Úinsertzinsert linestart+ÚcÚselú1.0rqú sel.firstÚ my_anchorÚ<úsel.lastÚ>r[)ÚstateÚkeysymrLröÚcomparerIÚsplitrõÚrangeÚlenÚstrÚ tag_removeÚmark_setÚtag_addÚsee)rr]ÚinsertptÚlineÚlineatÚdestÚfirstÚlasts r$rÃzEditorWindow.home_callback‚sK€Ø �K‰K˜!‰O Ò ! e§l¡l°fÒ&<àØ �9‰9�?‰?˜8Ô $Ø �9‰9× Ñ ˜X tÐ-=Ô >Ø �9‰9× Ñ Ð/°°xÔ @ä˜4Ÿ9™9Ÿ?™?¨8Ó4×:Ñ:¸3Ó?ÀÑBÓC‰Hà—9‘9—=‘=Ð!3Ð5EÓFˆDÜ!¤# d£)Ö,�ؘ‘>¨Ò3Ùð-ô˜T›�Ü�T—Y‘Y—_‘_ XÓ.×4Ñ4°SÓ9¸!Ñ<Ó=ˆØ �vÒ ØˆHØ"¤3 x£=Ñ0°Ñ4ˆØ �K‰K˜‰M˜aÒ à �I‰I× Ñ  ¨¨uÖ 5à—9‘9—?‘? ;Ô/à— ‘ ×"Ñ" ;°Õ9à—9‘9×$Ñ$ T§Y¡Y§_¡_°[Ó%AÀ3Ø%)§Y¡Y§_¡_°XÓ%>ô@à—I‘I×&Ñ& {°KÕ@à—I‘I×&Ñ& {°JÔ?Ø—I‘I—O‘O DÓ)ˆEØ—9‘9—?‘? ;Ó/ˆDØ�y‰y× Ñ   s¨4Ô0Ø! %�d�Ø �I‰I× Ñ  ¨¨uÔ 5Ø �I‰I× Ñ ˜e U¨DÔ 1Ø � ‰ ×ј8 TÔ*Ø � ‰ � ‰ �hÔØr&có¸—|j|j«|_t|jddd¬«}tj dk(r"|jj ddt¬«|jj dd t¬«|jj d d t¬«|jjtt¬ «|jtt¬ «|jjd |j«|jjd dd«|jj|j«y)NraÚgrey75)rPÚ borderwidthÚ backgroundrÚ _padding1z )rbrhzCol: ?rXzLn: ?)rbrcz<>z z)r0rŒÚ status_barr”rr|Ú set_labelÚRIGHTrËÚBOTTOMÚXrLr�Úset_line_and_columnrþÚ after_idle)rÚseps r$rÊzEditorWindow.set_status_bar­sø€Ø×-Ñ-¨d¯h©hÓ7ˆŒÜ�D—H‘H Q°AÀ(ÔKˆÜ �<‰<˜8Ò #ð �O‰O× %Ñ % k°6ÄÐ %Ô FØ �‰×!Ñ! (¨H¼5Ð!ÔAØ �‰×!Ñ! &¨'¼Ð!Ô>Ø �‰×Ѥ&¬qÐÔ1Ø �‰”f¤1ˆÔ%Ø � ‰ �‰Ð0°$×2JÑ2JÔKØ � ‰ ×ÑÐ5Ø*Ð,=ô ?à � ‰ ×јT×5Ñ5Õ6r&cóâ—|jjt«jd«\}}|jj dd|z«|jj dd|z«y)Nr@rhzCol: %srXzLn: %s)rLröÚINSERTrOrbrc)rr]rXrhs r$rgz EditorWindow.set_line_and_column½sT€Ø—y‘y—‘¤vÓ.×4Ñ4°SÓ9‰ ˆˆfØ �‰×!Ñ! (¨I¸Ñ,>Ô?Ø �‰×!Ñ! &¨(°T©/Õ:r&))ÚfileÚ_File)ÚeditÚ_Edit)ÚformatÚF_ormat)ÚrunÚ_Run)rsÚ_Options)rÚ_Window)r Ú_Helpcót—|j}ix|_}|jD]K\}}t|«\}}t ||›d�d«}t ||d|¬«x||<}|j |||¬«ŒMtj«r&t |dd¬«x|d<}|j d |¬ «|j«t |jd¬ «|_ |jd jd dd|j¬«|jdjt«|_|j«y)aPopulate the menu bar widget for the editor window. Each option on the menubar is itself a cascade-type Menu widget with the menubar as the parent. The names, labels, and menu shortcuts for the menubar items are stored in menu_specs. Each submenu is subsequently populated in fill_menus(), except for 'Recent Files' which is added to the File menu here. Instance variables: menubar: Menu widget containing first level menu items. menudict: Dictionary of {menuname: Menu instance} items. The keys represent the valid menu items for this window and may be a subset of all the menudefs available. recent_files_menu: Menu widget contained within the 'file' menudict. Ú_menu_postcommandNr)rFÚtearoffÚ postcommand)ÚlabelrDÚ underlineÚapple)rFryÚ applicationÚIDLE)r{rD©ryrlr@z Recent Files)r{r|rDr )rŠrôÚ menu_specsÚprepstrÚgetattrr‰Ú add_cascader Ú isCarbonTkÚ fill_menusÚrecent_files_menuÚinsert_cascaderöÚENDÚbase_helpmenu_lengthÚreset_help_menu_entries)rÚmbarrôrFr{r|rzrDs r$r™zEditorWindow.createmenubaràs6€ð �|‰|ˆØ#%Ð%ˆŒ ˜ØŸ?œ?‰KˆD�%Ü& u›~Ñ ˆI�uÜ! $¨4¨&Ð0AÐ(BÀDÓIˆKÜ$(¨°DÀ!Ø5@ô%Bð BˆH�T‰N˜Tà × Ñ  5¨t¸yÐ Õ Ið +ô × Ñ Ô ä-1°$¸WØ:;ô.=ð =ˆH�]Ñ # dà × Ñ  6°Ð Ô 5Ø �‰ÔÜ!% d§l¡l¸AÔ!>ˆÔØ � ‰ �fÑ×,Ñ,¨Q°nØ78Ø26×2HÑ2Hð -ô Jð%)§M¡M°&Ñ$9×$?Ñ$?ÄÓ$DˆÔ!Ø ×$Ñ$Õ&r&cóÒ—|jd}|jd«}|€d}||jkDr|j|jdz|«t j |«y)zSCallback to register window. Only called when Window menu exists. rrqNrrra)rôrörøÚdeleterÚadd_windows_to_menu)rrDrqs r$rúzEditorWindow.postwindowsmenus[€ð �}‰}˜XÑ&ˆØ�j‰j˜ÓˆØ ˆ;؈CØ �—‘Ò Ø �K‰K˜Ÿ™ qÑ(¨#Ô .Ü×"Ñ" 4Õ(r&cóH—|j|}|j||¬«y)z$Update label for menu item at index.)r{N©rôÚ entryconfig)rrDrör{Úmenuitems r$Úupdate_menu_labelzEditorWindow.update_menu_labeló#€à—=‘= Ñ&ˆØ×јU¨%ÐÕ0r&cóH—|j|}|j||¬«y)z$Update state for menu item at index.©rLNr‘)rrDrörLr“s r$rzEditorWindow.update_menu_stater•r&cóΗ|dk(rCt|d«}t|jd«|z«|jd«z }d}|df}|jj|g|¢­Žy)zHandle scrollbar.Úmovetorrqú@0,0ÚscrollÚunitsr[)ÚfloatÚroundÚ getlinenorLÚyview)rr]ÚargsÚfractionÚliness r$rÐzEditorWindow.handle_yviewsi€à �HÒ Ü˜T !™W“~ˆHܘ4Ÿ>™>¨%Ó0°8Ñ;Ó<Ø—^‘^ FÓ+ñ,ˆEàˆEؘ7Ð#ˆD؈� ‰ �‰˜Ð% Ó%Ør&có —|j}|jd|j›d|j›�«} |j dd|«xr|j |dd«}|s%|j ddd «|jd |«|js|j«|j}||_ tjdd d k(}|r|jd ¬«|jD]0} |\}} } | €Œ t!|| ««} |j#|| ¬«Œ2|j%|j&|j(«|r|jjd¬«y#t $rd}Y�ŒwxYw#t$rYŒ•wxYw)NÚ@Ú,rGr>rJFrErFrqrCr@rAÚarrow)Úcursorr—Úibeamr[)rLröÚxÚyrNÚTclErrorrSrTÚrmenuÚ make_rmenur]rr|ÚconfigÚ rmenu_specsÚ ValueErrorrƒÚentryconfigureÚtk_popupÚx_rootÚy_root) rr]rLÚnewdexÚ in_selectionr­ÚiswinÚitemr{Ú eventnameÚ verify_staterLs r$r zEditorWindow.right_menu_event)st€Ø�y‰yˆØ—‘˜a §¡˜y¨¨%¯'©'¨Ð3Ó4ˆð !Ø ŸL™L¨°d¸FÓCòCØŸ<™<¨°°zÓBð ñØ �O‰O˜E 5¨%Ô 0Ø �M‰M˜( FÔ +Ø�zŠzØ �O‰OÔ Ø— ‘ ˆØˆŒ Ü— ‘ ˜R˜aÐ  EÑ)ˆÙ Ø �K‰K˜wˆKÔ 'à×$Ô$ˆDð Ø15Ñ.��y ,ðÐ#ØØ/”G˜D ,Ó/Ó1ˆEØ × Ñ  ¨eÐ Õ 4ð%ð �‰�u—|‘| U§\¡\Ô2Ù Ø �I‰I× Ñ  GÐ Ô ,Øøô7ò !Ø ‹Lð !ûô ò Ùð ús#¹(E%Ã1E7Å% E4Å3E4Å7 FÆF)ÚCloserVNcóâ—t|jd¬«}|jD]B}|d|d}}|�$|j|fd„}|j||¬«Œ3|j «ŒD||_y)Nrr€racó&—|j|«yr&©Úevent_generate©rLrºs r$rfz(EditorWindow.make_rmenu..commandVs€Ø×'Ñ'¨ Õ2r&©r{rf)r‰rLr°Ú add_commandr÷r­)rr­r¹r{rºrfs r$r®zEditorWindow.make_rmenuQso€Ü�T—Y‘Y¨Ô*ˆØ×$Ô$ˆDØ# A™w¨¨Q©�9ˆEØÐ Ø!%§¡°ió3à×!Ñ!¨°wÐ!Õ?à×#Ñ#Õ%ð%ðˆ� r&có"—|j«Sr&)Úrmenu_check_copy©rs r$Úrmenu_check_cutzEditorWindow.rmenu_check_cut]s€Ø×$Ñ$Ó&Ð&r&cód— |jjd«}|rdSdS#t$rYywxYw)NrGÚnormalrt©rLrör¬)rÚindxs r$rÅzEditorWindow.rmenu_check_copy`s<€ð 4Ø—9‘9—?‘? ;Ó/ˆDñ $�8Ð 3¨Ð 3øôò Ùð ús ‚#£ /®/có†— |jjjd|jd«y#t$rYywxYw)Nztk::GetSelectionÚ CLIPBOARDrÉrt)rLr-Úcallr¬rÆs r$Úrmenu_check_pastezEditorWindow.rmenu_check_pastehs?€ð Ø �I‰I�L‰L× Ñ Ð0°$·)±)¸[Ô Iðøôò Ùð ús‚14´ A¿AcóB—tj|j«y)zHandle Help 'About IDLE' event.r[)r Ú AboutDialogrŒr's r$r©zEditorWindow.about_dialogps€ô ×јtŸx™xÔ(Ør&cóD—tj|jd«y)z&Handle Options 'Configure IDLE' event.ÚSettingsr[)r Ú ConfigDialogrŒr's r$rªzEditorWindow.config_dialogvs€ô ×!Ñ! $§(¡(¨:Ô6Ør&cóx—|jr |j}n |j}tj|«y)zHandle Help 'IDLE Help' event.r[)rˆrŒr Ú show_idlehelp)rr]Úparents r$r§zEditorWindow.help_dialog|s.€ð �9Š9Ø—Y‘Y‰Fà—X‘XˆFÜ ×ј6Ô"Ør&có2—tjdddk(r! tj|j«ytj|j«y#t $r5}t jdt|«|j¬«Yd}~yd}~wwxYw)Nr@rAúDocument Start Failure©ÚtitleÚmessager×r[) rr|rxÚ startfilerwÚOSErrorrrýrRrLÚ webbrowserÚopen)rr]Úwhys r$r¨zEditorWindow.python_docs†s~€Ü �<‰<˜˜Ð ˜uÒ $ð 8Ü— ‘ ˜TŸ]™]Ô+ð ô �O‰O˜DŸM™MÔ *Øøô ò 8Ü×$Ñ$Ð+CÜ ›H¨T¯Y©Y÷8ñ8ðûð  8ús˜AÁ BÁ!+BÂBcó:—|jjd«y)Nz<>r[©rLrÀr's r$r£zEditorWindow.cut‘s€Ø � ‰ × Ñ  Ô+Ør&cór—|jjd«sy|jjd«y)NrEz<>r[)rLÚ tag_rangesrÀr's r$r¤zEditorWindow.copy•s,€Ø�y‰y×#Ñ# EÔ*àØ � ‰ × Ñ  Ô,Ør&cóp—|jjd«|jjd«y)Nz <>rCr[)rLrÀrVr's r$r¥zEditorWindow.pasteœs'€Ø � ‰ × Ñ  Ô-Ø � ‰ � ‰ �hÔØr&có¬—|jjddd«|jjdd«|jjd«y)NrErFzend-1crCr[)rLrUrTrVr's r$r¬zEditorWindow.select_all¡s?€Ø � ‰ ×ј% ¨Ô1Ø � ‰ ×ј8 UÔ+Ø � ‰ � ‰ �hÔØr&cót—|jjddd«|jjd«y)NrErFrqrCr[)rLrSrVr's r$r­zEditorWindow.remove_selection§s+€Ø � ‰ ×јU E¨5Ô1Ø � ‰ � ‰ �hÔØr&cóz‡‡‡‡—|jjŠ|jjŠdŠˆˆˆˆfd„}|S)zèCursor 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. )z sel.first+1cz sel.last-1ccót•—|jdzdk(r ‰d«‰d‰‰«yy#t$rYywxYw)NrMrrGrC)rLr¬)r]Ú edge_indexÚ edges_tableÚself_text_indexÚself_text_mark_sets €€€€r$Ú move_at_edgez.move_at_edge·sHø€Ø— ‘ ˜a‘ AÒ%ðÙ# KÔ0Ù& x°¸ZÑ1HÕIð&øô òÙðús •+« 7¶7)rLrörT)rrërïrìrírîs ` @@@r$rÀz&EditorWindow.move_at_edge_if_selection¬s4û€ðŸ)™)Ÿ/™/ˆØ!ŸY™Y×/Ñ/ÐØ5ˆ ÷ ðÐr&có:—|jjd«y)Nz r[rãr's r$rÁzEditorWindow.del_word_leftÀs€Ø � ‰ × Ñ  Ô1Ør&có:—|jjd«y)Nzr[rãr's r$rÂzEditorWindow.del_word_rightÄs€Ø � ‰ × Ñ  Ô,Ør&cóB—tj|j«yrZ)rÚfindrLr's r$r®zEditorWindow.find_eventÈs€Ü� ‰ �D—I‘IÔØr&cóB—tj|j«yrZ)rÚ find_againrLr's r$r¯zEditorWindow.find_again_eventÌs€Ü×ј$Ÿ)™)Ô$Ør&cóB—tj|j«yrZ)rÚfind_selectionrLr's r$r±z!EditorWindow.find_selection_eventÐs€Ü×јdŸi™iÔ(Ør&cón—tj|j|j|j«yrZ)r rLrår‡r's r$r°z EditorWindow.find_in_files_eventÔs!€Ü � ‰ �$—)‘)˜TŸW™W d§j¡jÔ1Ør&cóB—tj|j«yrZ)rrLr's r$r²zEditorWindow.replace_eventØs€Ü�‰˜Ÿ ™ Ô"Ør&cóô—|j}tj|dd«j}|�I|j ddd«|j d|›d�«|j d«|j«y) Nz Go To Linez/Enter a positive integer ('big' = end of file):rErFrqrCú.0r[)rLrÚGotoÚresultrSrTrVrg)rr]rLÚlinenos r$r³zEditorWindow.goto_line_eventÜst€Ø�y‰yˆÜ—‘Ø�lð)ó÷‘&ð ð Ð Ø �O‰O˜E 5¨%Ô 0Ø �M‰M˜( v h¨b MÔ 2Ø �H‰H�XÔ Ø × $Ñ $Ô &Ør&cób— |jjdd«j«}t j |jdd|«j }|�D|jr|jj|«|S|jj|«|S#t$rd}YŒ�wxYw)z¯Get module name from user and open it. Return module path or None for calls by open_module_browser when latter is not invoked in named editor window. rGrJrBz Open ModulezAEnter the name of a Python module to search on sys.path and open:) rLrõÚstripr¬rÚ ModuleNamerýr‡ràrårî)rrFÚ file_paths r$Ú open_modulezEditorWindow.open_moduleês¨€ð Ø—9‘9—=‘= ¨jÓ9×?Ñ?ÓAˆDô×$Ñ$Ø— ‘ ˜=ð2àó ÷‘fð ð Ð Ø�zŠzØ— ‘ —‘  Ô*ðÐð—‘× Ñ  Ô+ØÐøôò ØŠDð ús‚*B  B.Â-B.có$—|j«yrZ)rr's r$r«zEditorWindow.open_module_events€Ø ×ÑÔØr&cóЗ|jj}|jjdk(r|s|j «}|€yddlm}|j|j|«y)NÚPyShellEditorWindowr[r)Úbrowser) rårÚ __class__Ú__name__rÚidlelibrÚ ModuleBrowserrˆ)rr]rrs r$rÇz EditorWindow.open_module_browsersX€Ø—7‘7×#Ñ#ˆØ—‘×'Ñ'Ð+@Ò@ÙØ×'Ñ'Ó)ˆHØÐØÝ#Ø×јdŸi™i¨Ô2Ør&cóF—ddlm}|j|j«y)Nr)Ú pathbrowserr[)r r Ú PathBrowserrˆ)rr]r s r$rÈzEditorWindow.open_path_browsers€Ý'Ø×Ñ § ¡ Ô*Ør&cóX—ddl}tjddg}|j|d¬«y)Nrz-cz,from turtledemo.__main__ import main; main()F)Úshellr[)Ú subprocessrÚ executableÚPopen)rr]rÚcmds r$rÉzEditorWindow.open_turtle_demos1€Ûä�~‰~ØØ=ð?ˆð ×ј EÐÔ*Ør&cóè—|�p|dkDrj|jjdd|z«|jjddd«|jjddd«|j «yyy)NrrCz%d.0rErFrqz insert +1l)rLrTrSrUÚcenter)rrþs r$ÚgotolinezEditorWindow.gotolinesc€Ø Ð  &¨1¢*Ø �I‰I× Ñ ˜x¨°&©Ô 9Ø �I‰I× Ñ  ¨¨uÔ 5Ø �I‰I× Ñ ˜e X¨|Ô <Ø �K‰K�Mð #-Ð r&cóv—|rtjj|«rytjjtjj |««\}}tjj |«t vry|jjdd«}|jd«xrd|vS)NTrFz 1.0 lineendz#!Úpython) rxryr~Úsplitextr9ÚnormcaserrLrõÚ startswith)rrÚbaseÚextrXs r$rïzEditorWindow.ispythonsource&s…€Ùœ2Ÿ7™7Ÿ=™=¨Ô2ØÜ—G‘G×$Ñ$¤R§W¡W×%5Ñ%5°hÓ%?Ó@‰ ˆˆcÜ �7‰7× Ñ ˜CÓ ¤MÑ 1ØØ�y‰y�}‰}˜U MÓ2ˆØ�‰˜tÓ$Ò9¨°TÐ)9Ð9r&cób—|jr#|jj|«d|_yyr&)r‡Úunregister_maybe_terminaterÆs r$Ú close_hookzEditorWindow.close_hook/s'€Ø �:Š:Ø �J‰J× 1Ñ 1°$Ô 7؈D�Jð r&có—||_yr&)r!)rr!s r$Úset_close_hookzEditorWindow.set_close_hook4s €Ø$ˆ�r&cóÈ—|jr|jj|«|j«|jj |«|j «yr&)r‡Úfilename_changed_editrärŒÚupdate_windowlist_registryrñrÆs r$rçz!EditorWindow.filename_change_hook7sE€Ø �:Š:Ø �J‰J× ,Ñ ,¨TÔ 2Ø ×ÑÔ Ø �‰×+Ñ+¨DÔ1Ø ×ÑÕr&có—|jry|j|jj«r|j «|_|jr2|j j |j|j¬«yy)N)ÚfilterÚafter)rêrïrårr*rÞÚinsertfilterafterrßrÆs r$Ú _addcolorizerzEditorWindow._addcolorizer>s_€Ø �:Š:Ø Ø × Ñ ˜tŸw™w×/Ñ/Ô 0Ø×,Ñ,Ó.ˆDŒJà �:Š:Ø �H‰H× &Ñ &¨d¯j©jÀÇ Á Ð &Õ Jð r&cóª—|jsy|jj«|jj|j«d|_yr&)rêÚ removecolorsrÞÚ removefilterrÆs r$Ú _rmcolorizerzEditorWindow._rmcolorizerGs9€Ø�zŠzØ Ø � ‰ ×ÑÔ!Ø �‰×јdŸj™jÔ)؈� r&có—|j«|j«tj|j«|j �|j j «|j�|jj«yy)zUpdate the color themeN) r/r+r(r+rLrëÚupdate_highlight_colorsrìÚ update_colorsrÆs r$rñzEditorWindow.ResetColorizerNso€ð ×ÑÔØ ×ÑÔÜ×!Ñ! $§)¡)Ô,à × Ñ Ð (Ø × Ñ × 5Ñ 5Ô 7à × Ñ Ð (Ø × Ñ × +Ñ +Õ -ð )r&Ú_có0—|jd|«|j|«}|r$||jvr|jd|dz|«d|j|«k(r|jd|«n|jd|dz«|j |«y)NÚERRORz wordstartÚ rCz+1c)rUrõÚ IDENTCHARSrTrV)rrLÚposÚchars r$Úcolorize_syntax_errorz"EditorWindow.colorize_syntax_error]s{€Ø � ‰ �W˜cÔ"Ø�x‰x˜‹}ˆÙ �D˜DŸO™OÑ+Ø �L‰L˜ #¨ Ñ"4°cÔ :Ø �4—8‘8˜C“=Ò Ø �M‰M˜( CÕ (à �M‰M˜( C¨%¡KÔ 0Ø �‰�� r&có”—tjdddd¬«}|sd|jd<ytj|jd<y) z&Update the cursor blink configuration.rGr(z cursor-blinkrmrJrroN)rr–rLrn)rÚ cursorblinks r$rÜz EditorWindow.update_cursor_blinkhsC€ä×(Ñ(ؘ¨¸VôEˆ áØ)*ˆD�I‰I�oÒ &ô*2×)@Ñ)@ˆD�I‰I�oÒ &r&có—|j�|jj«|j�|jj«tj|j dd«}||j d<|j«y)z.Update the text widgets' font if it is changedNrGr(rk)rëÚ update_fontrìrrÔrˆrLrÖ)rÚnew_fonts r$Ú ResetFontzEditorWindow.ResetFontrsr€ð × Ñ Ð (Ø × Ñ × )Ñ )Ô +ð × Ñ Ð (Ø × Ñ × )Ñ )Ô +ä×#Ñ# D§I¡I¨v°~ÓFˆØ$ˆ� ‰ �&ÑØ �‰Õr&có|—tj«x|j_}|j «D]"\}}|j j |g|¢­ŽŒ$|j«D]O}tj|«}|sŒ|j «D]"\}}|j j |g|¢­ŽŒ$ŒQy)zgRemove the virtual, configurable keybindings. Leaves the default Tk Text keybindings. N) rÚGetCurrentKeySetr/Údefault_keydefsÚitemsrLÚ event_deleteÚget_standard_extension_namesÚGetExtensionBindings)rÚkeydefsr]ÚkeylistÚ extensionNameÚxkeydefss r$ÚRemoveKeybindingszEditorWindow.RemoveKeybindingsƒs €ô 3;×2KÑ2KÓ2MÐMˆ� ‰ Ô%¨Ø%Ÿm™mžo‰NˆE�7Ø "ˆD�I‰I× "Ñ " 5Ð 3¨7Ô 3ð.à!×>Ñ>Ö@ˆMÜ×4Ñ4°]ÓCˆHÚØ&.§n¡nÖ&6‘N�E˜7Ø*�D—I‘I×*Ñ*¨5Ð;°7Ô;ñ'7ñAr&có —tj«x|j_}|j «|j «D]+}tj |«}|sŒ|j |«Œ-i}|jjD]4}i||d<|dD]"}|sŒ|d||dt|d«d<Œ$Œ6|jD]²}|j|}|jt«}|€Œ*|dz }td|«D]u} |j| «dk(sŒ|j| d«} | sŒ-|j| d«} d} ||vr| ||vr||| } | sŒWt|| «} |j!| | ¬«ŒwŒ´y) zeApply the virtual, configurable keybindings. Also update hotkeys to current keyset. rraNrfÚ acceleratorr{rB)rN)rrBr/rCršrFrGÚmenudefsr‚rôrör‰rPrKÚ entrycgetÚget_acceleratorr’) rrHrJrKÚ menuEventDictrDr¹Ú menubarItemrqröÚaccelÚitemNamer]s r$ÚApplyKeybindingszEditorWindow.ApplyKeybindings’s‰€ô 3;×2KÑ2KÓ2MÐMˆ� ‰ Ô%¨Ø ×ÑÔØ!×>Ñ>Ö@ˆMÜ×4Ñ4°]ÓCˆHÚØ×#Ñ# HÕ-ðAð ˆ Ø—M‘M×*Ô*ˆDØ%'ˆM˜$˜q™'Ñ "ؘQœ�ÚØBFÀqÁ'�M $ q¡'Ñ*¬7°4¸±7Ó+;¸AÑ+>Ò?ñ ð+ð  Ÿ=œ=ˆKØ—=‘= Ñ-ˆDØ—*‘*œS“/ˆC؈{àØ �1‰HˆCܘq #ž�Ø—9‘9˜UÓ# yÓ0Ø ŸN™N¨5°-Ó@�EÚØ#'§>¡>°%¸Ó#A˜Ø "˜Ø&¨-Ñ7Ø'¨=¸Ñ+EÑEØ(5°kÑ(BÀ8Ñ(L Ú Ü$3°G¸UÓ$C˜EØ ×,Ñ,¨UÀÐ,ÕFñ'ñ)r&cóZ—|jstjdddd¬«|_yy)zCUpdate the indentwidth if changed and not using tabs in this windowrGrlz num-spacesrIrJN)r×rr–rÙrÆs r$rÚz#EditorWindow.set_notabs_indentwidthºs,€ð�|Š|Ü'×1Ñ1°&¸(À<Ø7<ô >ˆDÕ ðr&cót—tj«}|jd}|jt«}||j kDr|j |j dz|«|rA|j«|D],}|j|d«}|j|d|¬«Œ.||jd<y)z4Update the additional help entries on the Help menu.r rarrÂN) rÚGetAllExtraHelpSourcesListrôrör‰rŠrŽr÷Ú_extra_help_callbackrÃ)rÚ help_listÚhelpmenuÚhelpmenu_lengthÚentryrs r$r‹z$EditorWindow.reset_help_menu_entriesÁs§€ä×7Ñ7Ó9ˆ Ø—=‘= Ñ(ˆà"Ÿ.™.¬Ó-ˆØ ˜T×6Ñ6Ò 6Ø �O‰O˜T×6Ñ6¸Ñ:¸_Ô Má Ø × "Ñ "Ô $Û"�Ø×/Ñ/°°a±Ó9�Ø×$Ñ$¨5°©8¸SÐ$ÕAð#ð!)ˆ� ‰ �fÒr&có‡—|fˆfd„ }|S)z9Return a callback that loads resource (file or web page).cól•—|jd«stjj|«}tj dddk(r tj |«ytj|«y#t$r5}tjdt|«‰j¬«Yd}~yd}~wwxYw)N)ÚwwwÚhttpr@rArÙrÚ)rrxryr†rr|rÝrÞrrýrRrLrßrà)Úhelpfilerárs €r$Údisplay_extra_helpz=EditorWindow._extra_help_callback..display_extra_helpÔsŒø€Ø×&Ñ& Ô7ÜŸ7™7×+Ñ+¨HÓ5�Ü�|‰|˜B˜QР5Ò(ð<Ü—L‘L Õ*ô —‘ Õ)øô ò<Ü×(Ñ(Ð/GÜ # C£°·±÷<ò<ûð<úsÁ A5Á5 B3Á>+B.Â.B3r\)rÚresourcerds` r$rZz!EditorWindow._extra_help_callbackÒsø€à(0õ *ð"Ð!r&cóŠ—g}|j}|rFtjj|«r't |dd¬«5}|j «}ddd«|rItjj |«dz}||vr|j|«|jd|«g}|D]:}d|vs#tjj|dd«rŒ*|j|«Œ<|D�cgc] }||vsŒ|‘Œ }}d }|dt|«}|r* t |d dd¬«5}|j|«ddd«|j&j(D]u} | j*} | j-dt.«t1|«D]C\} } | j3«} | j5| «}| j7|| dz| z|d¬«ŒEŒwy#1swY�ŒuxYwcc}w#1swYŒªxYw#t$rY} t|jd d «s7d |j_t!j"dd| ›d�|j$¬«Yd} ~ �Œ d} ~ wwxYw)z/Load and update the recent files list and menusÚutf_8r)r.ÚerrorsNr6rÚrrÚ1234567890ABCDEFGHIJKÚwÚrecentfiles_messageFTz IDLE Warningz)Cannot save Recent Files list to disk. z Select OK to continue.rÚrA)r{rfr|)r’rxryríràÚ readlinesÚabspathÚremoverCÚappendrQÚ writelinesrÞrƒrˆrlrÚ showwarningrLrŒr�r‡rŽr‰Ú enumerateÚrstripÚ#_EditorWindow__recent_file_callbackrÃ)rÚnew_fileÚrf_listrÚ rf_list_fileÚ bad_pathsryÚulcharsÚrf_fileÚerrÚinstancerDÚiÚ file_nameÚcallbacks r$ròz%EditorWindow.update_recent_files_listás#€ðˆØ×*Ñ*ˆ Ù œŸ™Ÿ™¨ Ô2Ü�iØ&¨yõ:Ø=IØ&×0Ñ0Ó2�÷:ñ Ü—w‘w—‘ xÓ0°4Ñ7ˆHؘ7Ñ"Ø—‘˜xÔ(Ø �N‰N˜1˜hÔ 'àˆ ÛˆDØ�t‰|¤2§7¡7§>¡>°$°q¸°*Õ#=Ø× Ñ  Õ&ðñ%,ÓE¡G˜D¨t¸9Ò/D’4 GˆÐEØ)ˆØ˜!œC ›LÐ)ˆÙ ð *ܘ) SØ#*°9õ>ØAHØ×&Ñ& wÔ/÷>ðŸ™×.Ô.ˆHØ×-Ñ-ˆDØ �K‰K˜œ3Ô Ü )¨'Ö 2‘ ��9Ø%×,Ñ,Ó.� Ø#×:Ñ:¸9ÓE�Ø× Ñ  w¨q¡z°CÑ'7¸)Ñ'CØ)1Ø+,ð!õ.ñ!3ñ/÷=:ñ:üòF÷ >ð>ûôò *ܘtŸy™yÐ*?ÀÔGØ48�D—I‘IÔ1Ü×*Ñ*°ð!%Ø%( Eð*9ð!9ð $Ÿy™yõ *ÿùð *úsH¾GÃ' GÃ1GÄ G ÄGÄ+G ÇG ÇGÇG Ç IÇ)AH=È=Icó‡—|fˆfd„ }|S)Ncó>•—‰jj|¬«y)N)ÚeditFile)rårà)Ú fn_closurers €r$Úopen_recent_filez=EditorWindow.__recent_file_callback..open_recent_filesø€Ø �G‰G�L‰L *ˆLÕ -r&r\)rrr…s` r$Ú__recent_file_callbackz#EditorWindow.__recent_file_callbacksø€Ø(1õ .àÐr&có—|j«}|j«}|r&|r$tj«s|dz|ztz}n |r|}n|r|}nd}|xs|xs|}|j «s d|z}d|z}|j j|«|j j|«tj«rH|j jd|«|j jd|j « «yy)Nz - Úuntitledz*%s*z*%sz -titlepathz -modified) Ú short_titleÚ long_titler Ú isCocoaTkÚ _py_versionÚ get_savedrŒÚwm_titleÚ wm_iconnameÚ wm_attributes)rÚshortÚlongrÛÚicons r$räzEditorWindow.saved_change_hooksê€Ø× Ñ Ó"ˆØ�‰Ó ˆÙ ‘T¤&×"2Ñ"2Ô"4ð˜E‘M DÑ(¬;Ñ6‰E٠؉E٠؉EàˆEØÒ%˜Ò% ˆØ�~‰~ÔØ˜U‘NˆEؘ4‘<ˆDØ �‰×ј%Ô Ø �‰×јTÔ"ä × Ñ Ô à �H‰H× "Ñ " <°Ô 6ð �H‰H× "Ñ " ;°D·N±NÓ4DÐ0DÕ Eð r&có6—|jj«Sr&)rßr�rÆs r$r�zEditorWindow.get_saved/s€Ø�y‰y×"Ñ"Ó$Ð$r&có:—|jj|«yr&)rßÚ set_saved)rÚflags r$r–zEditorWindow.set_saved2s€Ø � ‰ ×јDÕ!r&có8—|jj«yr&)rßÚ reset_undorÆs r$r™zEditorWindow.reset_undo5s€Ø � ‰ ×ÑÕr&cót—|jj}|rtjj |«SdS)Nrˆ)rårrxryr9)rrs r$r‰zEditorWindow.short_title8s-€Ø—7‘7×#Ñ#ˆÙ-5Œr�w‰w×Ñ Ó)ÐE¸:ÐEr&có6—|jjxsdS)NrB)rårrÆs r$rŠzEditorWindow.long_title<s€Ø�w‰w×ÑÒ% 2Ð%r&có$—|j«yrZ)rr's r$r¦z EditorWindow.center_insert_event?s€Ø � ‰ Œ Ør&cóÆ—|j}|j«\}}|j|«}||z }td||dzz «}|j t |««y)NrarC)rLÚgetwindowlinesrŸÚmaxr r�)rÚmarkrLrŒÚbotrþrPÚnewtops r$rzEditorWindow.centerCsY€Ø�y‰yˆØ×&Ñ&Ó(‰ˆˆSØ—‘ Ó%ˆØ�s‘ˆÜ�Q˜ ¨¡Ñ*Ó+ˆØ � ‰ ”5˜“=Õ!r&có—|j}|jd«}|jd«}||k(r)|j«dk(rt|d«}||zdz }||fS)Nršz@0,65535rarP)rLrŸÚ winfo_heightrI)rrLrŒr¡rPs r$ržzEditorWindow.getwindowlinesKsc€Ø�y‰yˆØ�n‰n˜VÓ$ˆØ�n‰n˜ZÓ(ˆØ �#Š:˜$×+Ñ+Ó-°Ò2䘘h™Ó(ˆFؘ‘, Ñ"ˆCØ�Cˆxˆr&có`—|j}tt|j|«««Sr&)rLrIr�rö)rr rLs r$rŸzEditorWindow.getlinenoUs$€Ø�y‰yˆÜ”5˜Ÿ™ DÓ)Ó*Ó+Ð+r&có°—|jj«}tjd|«}t t t |j«««S)zReturn (width, height, x, y)z(\d+)x(\d+)\+(-?\d+)\+(-?\d+))rŒÚ wm_geometryÚreÚmatchÚlistr,rIÚgroups)rÚgeomÚms r$Ú get_geometryzEditorWindow.get_geometryYs=€à�x‰x×#Ñ#Ó%ˆÜ �H‰HÐ5°tÓ <ˆÜ”Cœ˜QŸX™X›ZÓ(Ó)Ð)r&có$—|j«yrZ)rœr's r$ržzEditorWindow.close_event_s€Ø � ‰ Œ Ør&cóF—|jr•|j«sk|jj«dk7r|jj «|jj «|jj «|jj«Sy)NrÉ)rår�rŒrLÚ deiconifyÚlowerÚliftÚ maybesaverÆs r$r´zEditorWindow.maybesavecsi€Ø �7Š7Ø—>‘>Ô#Ø—8‘8—>‘>Ó# XÒ-Ø—H‘H×&Ñ&Ô(Ø—‘—‘Ô Ø—‘— ‘ ”Ø—7‘7×$Ñ$Ó&Ð &ð r&có‚— |j«}t|«dk7r|j«|S#t$rYywxYw)NÚcancel)r´rRÚ_closeÚAttributeError)rÚreplys r$rœzEditorWindow.closels?€ð Ø—N‘NÓ$ˆEÜ�5‹z˜XÒ%Ø— ‘ ” ؈LøÜò Ù ð ús ‚/2² >½>cóP—|jjr&|j|jj¬«tj|j «|j «|jj«d|_d|_|jr!|jj«d|_ d|_ d|_ |jj«d|_ |jj«|jr|j«yy)N)rv)rårròrÚunregister_callbackrúÚunload_extensionsrœrßrêrLrŽrÞrŒÚdestroyr!rÆs r$r·zEditorWindow._closeusÍ€Ø �7‰7× Ò Ø × )Ñ )°4·7±7×3CÑ3CÐ )Ô DÜ×"Ñ" 4×#7Ñ#7Ô8Ø ×ÑÔ Ø �‰� ‰ ŒØˆŒØˆŒ Ø �:Š:Ø �J‰J× Ñ Ô ØˆDŒJ؈Œ Ø ˆÔØ �‰�‰Ô؈ŒØ �‰×ÑÔØ �?Š?à �O‰OÕ ð r&có2—i|_|j«yr&)Ú extensionsÚload_standard_extensionsrÆs r$rózEditorWindow.load_extensions‰s€ØˆŒØ ×%Ñ%Õ'r&cóœ—t|jj««D]}t|d«sŒ|j «Œ!i|_y)Nrœ)rªr¿ÚvaluesrÛrœ)rÚinss r$r¼zEditorWindow.unload_extensions�s:€Ü˜Ÿ™×.Ñ.Ó0Ö1ˆCÜ�s˜GÕ$Ø— ‘ • ð2ðˆ�r&có²—|j«D]} |j|«Œy#tdt|««t j «YŒExYw)NzFailed to load extension)rFÚload_extensionÚprintÚreprÚ tracebackÚ print_exc)rrFs r$rÀz%EditorWindow.load_standard_extensions“sJ€Ø×5Ñ5Ö7ˆDð &Ø×#Ñ# DÕ)ñ8øð &ÜÐ0´$°t³*Ô=Ü×#Ñ#Ö%ús •)©+Acó.—tjd¬«S)NT)Ú editor_only)rÚ GetExtensionsrÆs r$rFz)EditorWindow.get_standard_extension_names›s€Ü×%Ñ%°$Ô7Ð7r&ÚZzDummyÚzzdummycóè—|jj||«} tjd|zt¬«}t||«}tj|«}t|d«r|j|j|«||«}||j|<|r�|j|«|D]x}|j!dd«}|dddk(r|dd}|dddk(rŒ|d dd k(r|dd }|d dd k(rŒ|d z}t||«sŒS|j"j%|t||««Œzyy#t t f$rtj|«}Y�ŒwxYw#t $rtd|«‚wxYw) Nr@)Úpackagez Failed to import extension: rOÚ-r3rarIrrrKÚ_event)ÚextfilesrõÚ importlibÚ import_moduleÚ __package__Ú ImportErrorÚ TypeErrorrÆrƒrrGrÛr†rOr¿ršrrLr�) rrFÚfnameÚmodÚclsrHrÃÚveventÚ methodnames r$rÅzEditorWindow.load_extension¢sz€Ø— ‘ ×!Ñ! $¨Ó-ˆð ð 5Ü×-Ñ-¨c°E©kÄ;ÔO�ô �c˜4Ó ˆÜ×/Ñ/°Ó5ˆÜ �3˜ Ô #Ø �O‰O˜CŸL™L¨'Ô 2Ù�$‹iˆØ #ˆ�‰˜ÑÙ Ø × Ñ  Ô (Û!�Ø#Ÿ^™^¨C°Ó5� Ø   !�n¨Ò+Ø!+¨A¨B �Jð!  !�n¨Ó+à   �o¨Ò,Ø!+¨C¨R �Jð!  �o¨Ó,à'¨(Ñ2� ܘ3  Õ+Ø—I‘I—N‘N 6¬7°3¸ Ó+CÕDñ"ð øô ¤Ð+ò 5Ü×-Ñ-¨eÓ4“ð 5ûäò Ü Ð2°DÔ 9Ø ð ús#ŸD/Ä/$EÅEÅEÅEÅE1có¶—|€|jj}|j}||_|j «D]\}}|sŒ |j |g|¢­ŽŒy)z"Add events with keys to self.text.N)r/rCrLrHrDrþ)rrHrLr]rIs r$ršzEditorWindow.apply_bindings¾sP€à ˆ?Ø—m‘m×3Ñ3ˆGØ�y‰yˆØˆŒ Ø%Ÿm™mžo‰NˆE�7ÚØ�—‘˜uÐ/ wÔ/ñ.r&c óô—|€|jj}|€|jj}|j}|j}|D]«\}}|j |«}|sŒ|D]�}|€|j «Œ|\} } | dddk(} | r| dd} t| «\} } t|| «} || fd„}| r-|j| t«}|j| | || |¬«Œy|j| | || ¬«Œ�Œ­y)zµFill in dropdown menus used by this window. Items whose name begins with '!' become checkbuttons. Other names indicate commands. None becomes a separator. NraÚ!có&—|j|«yr&r¿rÁs r$rfz(EditorWindow.fill_menus..commandâs€Ø×+Ñ+¨IÕ6r&)r{r|rfrNÚvariable)r{r|rfrN) r/rOrCrôrLrõr÷r‚rQÚ get_var_objÚ BooleanVarÚadd_checkbuttonrÃ)rrOrHrôrLÚmnameÚ entrylistrDr^r{rºÚ checkbuttonr|rNrfÚvars r$r†zEditorWindow.fill_menusÈs€ð Ð Ø—}‘}×-Ñ-ˆHØ ˆ?Ø—m‘m×3Ñ3ˆGØ—=‘=ˆØ�y‰yˆÛ (Ñ ˆE�9Ø—<‘< Ó&ˆDÙØÛ"�Ø�=Ø×&Ñ&Õ(à',Ñ$�E˜9Ø#(¨¨! 9°Ñ#3�KÙ"Ø % a b  ˜Ü'.¨u£~Ñ$�I˜uÜ"1°'¸9Ó"E�KØ%)°Yó7á"Ø"×.Ñ.¨y¼*ÓE˜Ø×,Ñ,°5ÀIØ$+¸Ø%(ð-õ*ð×(Ñ(¨uÀ Ø18Ø5@ð)õBñ%#ñ !)r&cób—|j|«}|r|j«}|St|«‚r&)rãrõÚ NameError)rrFréÚvalues r$ÚgetvarzEditorWindow.getvarîs/€Ø×јtÓ$ˆÙ Ø—G‘G“IˆE؈Lä˜D“/Ð !r&cód—|j||«}|r|j|«yt|«‚r&)rãrÓrë)rrFrìÚvartyperés r$ÚsetvarzEditorWindow.setvarös,€Ø×јt WÓ-ˆÙ Ø �G‰G�E�Nä˜D“/Ð !r&có†—|jj|«}|s#|r!||j«x|j|<}|S)z:Return a tkinter variable instance for the event. )rŽrõrL)rrºrïrés r$rãzEditorWindow.get_var_objýsB€ð×Ñ×#Ñ# IÓ.ˆÙ‘wá18¸¿¹Ó1CÐ CˆD× Ñ ˜iÑ (¨3؈ r&có’—|jr;|jjd|«xsd|jj|«vSy)NÚTODOÚSTRINGra)rêrLÚ tag_prevrangeÚ tag_names)rÚ text_indexs r$Úis_char_in_stringzEditorWindow.is_char_in_stringsE€Ø �:Š:ð—9‘9×*Ñ*¨6°:Ó>ò?ؘtŸy™y×2Ñ2°:Ó>Ð>ð ?ðr&có–— |jjd«}|jjd«}||fS#t$rYywxYw)NrGrJ©NNrÊ)rr[r\s r$Úget_selection_indicesz"EditorWindow.get_selection_indicessG€ð Ø—I‘I—O‘O KÓ0ˆEØ—9‘9—?‘? :Ó.ˆDؘ$�;Ð øÜò Ùð ús‚9<¼ AÁAcóF—|jdxst}t|«S)NÚtabs)rLÚTK_TABWIDTH_DEFAULTrI)rÚcurrents r$Úget_tk_tabwidthzEditorWindow.get_tk_tabwidth&s €Ø—)‘)˜FÑ#Ò:Ô':ˆÜ�7‹|Ðr&c óÈ—|j}|j«|k7rC|jjdd|dd|jd|z«}|j |¬«yy)Nrkr1z -displayofÚn)rý)rLrr-rÎÚmasterÚ configure)rÚ newtabwidthrLÚpixelss r$Úset_tk_tabwidthzEditorWindow.set_tk_tabwidth,s^€Ø�y‰yˆØ × Ñ Ó ! [Ò 0à—W‘W—\‘\ &¨)°T¸&±\Ø".°· ± Ø"%¨ Ñ"3ó5ˆFð �N‰N ˆNÕ 'ð 1r&cóÌ—|rG|rE|j«}d|cxkrdkr nn||_|j|jk7rd|_|j |j«y)NrCrF)Ú guess_indentrÙrØr×r)rr Úguessr~s r$réz#EditorWindow.set_indentation_params7sS€Ù ™Ø×!Ñ!Ó#ˆAØ�AŒ{˜�{Ø#$�Ô Ø×Ñ 4§=¡=Ò0Ø$�” Ø ×јTŸ]™]Õ+r&có—|j}|j«\}}|r'|r%|j||«|jd|«y|j dd«}|dk(r6|j ddd«r|jd«y|j «y|dd vr|jd«y|j}t|j|««}|d kDsJ‚|d z |jz|jz}d } |dd}| d z} t|j|««}||ks|dd vrnŒ2|j«|jd | zd«||kr#|jdd ||z z|j«|j«y)NrCr[r?rBrKrFz insert-1crrú rraz insert-%dcrA)rLrûrŽrTrõrNÚbellrØrQÚ expandtabsrÙrárCrÿrâ) rr]rLr[r\ÚcharsrØÚhaveÚwantÚ ncharsdeleteds r$r´z"EditorWindow.smart_backspace_event@s”€Ø�y‰yˆØ×0Ñ0Ó2‰ ˆˆtÙ ‘TØ �K‰K˜˜tÔ $Ø �M‰M˜( EÔ *Øð—‘Ð+¨XÓ6ˆØ �BŠ;Ø�|‰|˜H c¨5Ô1à— ‘ ˜KÔ(ðð— ‘ ” ØØ �"‰I˜UÑ "à �K‰K˜ Ô $Øð—=‘=ˆÜ�5×#Ñ# HÓ-Ó.ˆØ�aŠxˆˆxؘ‘˜d×.Ñ.Ñ.°$×2BÑ2BÑBˆàˆ ØØ˜#˜2�JˆEØ)¨AÑ-ˆMÜ�u×'Ñ'¨Ó1Ó2ˆDØ�tŠ|˜u R™y°Ñ5Øð ð ×ÑÔØ � ‰ �L =Ñ0°(Ô;Ø �$Š;Ø �K‰K˜ #¨°©Ñ"5Ø×3Ñ3ô 5à ×ÑÔØr&có$—|j}|j«\}}|j« |rh|rft|«t|«k7r+|jj |«|j «S|j||«|jd|«|jdd«}t||j«\}}|t|«k(r|j||jz«ng|jrd}n;t|j!|j««}|j} d| || zz z}|j#d||j$«|j'd« |j «y#|j «wxYw)NrCr?rBrAr[)rLrûráÚ index2liner·r¸rârŽrTrõÚget_line_indentrØrQÚ reindent_torÙr×rrCrÿrV) rr]rLr[r\ÚprefixÚrawÚ effectiveÚpadrs r$r¶zEditorWindow.smart_indent_eventksR€ð�y‰yˆØ×0Ñ0Ó2‰ ˆˆtØ ×ÑÔð #ٙܘeÓ$¬ °4Ó(8Ò8ØŸ<™<×;Ñ;¸EÓBð( × Ñ Õ "ð'— ‘ ˜E 4Ô(Ø— ‘ ˜h¨Ô.Ø—X‘XÐ0°(Ó;ˆFÜ,¨V°T·]±]ÓC‰NˆC�Ø”c˜&“kÒ!à× Ñ  ¨T×-=Ñ-=Ñ!=Õ>ð—<’<Ø‘Cä # F×$5Ñ$5°d·m±mÓ$DÓ E�IØ×(Ñ(�AØ  Y°¡]Ñ!2Ñ3�CØ— ‘ ˜H c¨4×+FÑ+FÔGØ �H‰H�XÔ Øà × Ñ Õ "øˆD× Ñ Õ "ús±5E=Á7C4E=Å=Fcó —|j}|j«\}}|j« |r&|r$|j||«|j d|«|j dd«}dt |«}}||kr||dvr|dz }||kr||dvrŒ||k(r@|jdd|j« |jd«|j«y|d|}d}|r|d dvr|dd }|dz }|r|d dvrŒ|r|jd |zd«|j d«dvr%|jd«|j d«dvrŒ%|jdd|j«t|jd««} tj|j|j «} |j"s�|j$D]k} t'| | z d«} t)| «d z} |j | d«}| j+|«| j-|j/| ««}|€| dk(sŒkn| j1xsd«nP|j3d d«}|r|d} nd } |j | d«}| j+|«| j1d«| j5«}|tj6k7�r |tj8k(rnÒ|tj:k(r|jd||j«n¡|tj<k(r |j?| jA««nn|tjBk(rQ| jE«dkDr|jd||j«n*|j?| jG««n Jd|›�«‚ |jd«|j«y| jI«}|jd||j«| jK«r|jM|«n#|r!| jO«r|jQ|« |jd«|j«y#|jd«|j«wxYw)a…Insert a newline and indentation after Enter keypress event. Properly position the cursor on the new line based on information from the current line. This takes into account if the current line is a shell prompt, is empty, has selected text, contains a block opener, contains a block closer, is a continuation line, or is inside a string. rCr?rr rar6r[Nrrzinsert - %d charsrûÚconsolerFzbogus continuation type ))rLrûrárŽrTrõrQrCrÿrVrârrörÚParserrÙrØr“rÝrŸrÇÚset_codeÚfind_good_parse_startÚ_build_char_in_string_funcÚset_lorõÚget_continuation_typeÚC_NONEÚC_STRING_FIRST_LINEÚC_STRING_NEXT_LINESÚ C_BRACKETrÚcompute_bracket_indentÚ C_BACKSLASHÚget_num_lines_in_stmtÚcompute_backslash_indentÚget_base_indent_stringÚis_block_openerr¶Úis_block_closerr´)rr]rLr[r\rXr~rÚindentÚlnor«ÚcontextÚstartatÚ startatindexÚrawtextÚbodÚrrDs r$rµz%EditorWindow.newline_and_indent_eventŽs%€ð�y‰yˆØ×0Ñ0Ó2‰ ˆˆtØ ×ÑÔðe #ٙؗ ‘ ˜E 4Ô(Ø— ‘ ˜h¨Ô.Ø—8‘8Ð.°Ó9ˆDð”c˜$“iˆqˆAØ�a’%˜D ™G uÑ,Ø�Q‘�ð�a’%˜D ™G uÒ,à�AŠvð— ‘ Ð.°Ø ×7Ñ7ô9àðj �H‰H�XÔ Ø × Ñ Õ "ðk˜"˜1�XˆFðˆAÙ˜4 ™8 uÑ,ؘC˜R�y�Ø�Q‘�ñ˜4 ™8 uÒ,ñØ— ‘ Ð/°!Ñ3°XÔ>ð—(‘(˜8Ó$¨Ñ-Ø— ‘ ˜HÔ%ð—(‘(˜8Ó$¨Ò-ð �K‰K˜ $¨×(CÑ(CÔ Dô˜TŸZ™Z¨Ó1Ó2ˆCÜ—‘˜t×/Ñ/°·±Ó?ˆAØ×(Ò(Ø#×5Ô5�GÜ! #¨¡-°Ó3�GÜ#'¨£=°4Ñ#7�LØ"Ÿh™h |°XÓ>�GØ—J‘J˜wÔ'Ø×1Ñ1Ø ×;Ñ;¸LÓIóK�Cà�¨'°Q«,Ùð 6𗑘š Õ"à×&Ñ& y°(Ó;�ÙØ#$ Q¡4‘Là#(�LØŸ(™( <°Ó:�Ø— ‘ ˜7Ô#Ø—‘˜” à×'Ñ'Ó)ˆAØ”G—N‘NÓ"àœ×3Ñ3Ò3àØœ'×5Ñ5Ò5ð—K‘K ¨&°$×2MÑ2MÕNØœ'×+Ñ+Ò+ð ×$Ñ$ Q×%=Ñ%=Ó%?Õ@Øœ'×-Ñ-Ò-ð ×.Ñ.Ó0°1Ò4ØŸ ™  H¨fØ$(×$?Ñ$?õAð×(Ñ(¨×)CÑ)CÓ)EÕFà>Ð 8¸¸Ð>Ó>˜1Øð �H‰H�XÔ Ø × Ñ Õ "ð×-Ñ-Ó/ˆFØ �K‰K˜ &¨$×*EÑ*EÔ FØ× Ñ Ô"Ø×'Ñ'¨Õ.Ù˜A×-Ñ-Ô/Ø×*Ñ*¨5Ô1Øà �H‰H�XÔ Ø × Ñ Õ "øð �H‰H�XÔ Ø × Ñ Õ "ús4±A$QÂ"QÃ#QÃ?AQÅC#QÈ2E3QÏA2QÑ#Rcó&—||jfd„}|S)Ncó—||d|zz«S)Nz+%dcr\)ÚoffsetÚ _startindexÚ_iciss r$Úinnerz6EditorWindow._build_char_in_string_func..inners€á˜ v°¡Ñ6Ó7Ð 7r&)rø)rÚ startindexr;s r$r z'EditorWindow._build_char_in_string_funcs€Ø&0Ø×.Ñ.ó 8ðˆ r&cól—|jr$t||j«\}}d|zd|zzSd|zS)NrBrA)r×ÚdivmodrØ)rrÚntabsÚnspacess r$Ú _make_blankszEditorWindow._make_blankss9€Ø �<Š<Ü# A t§}¡}Ó5‰NˆE�7ؘ%‘< #¨¡-Ñ/Ð /à˜‘7ˆNr&có—|j}|j«|jddd«r|jdd«|r,|j d|j |«|j «|j«y)Nr?z!=rC)rLrárNrŽrCrArÿrâ)rrhrLs r$rzEditorWindow.reindent_to sj€Ø�y‰yˆØ ×ÑÔØ �<‰<Ð*¨D°(Ô ;Ø �K‰KÐ*¨HÔ 5Ù Ø �K‰K˜ $×"3Ñ"3°FÓ";Ø×3Ñ3ô 5à ×ÑÕr&cóÖ—t|j«j«\}}|r9|r7t||j«\}}t||j«\}}||z Sdx}}||z S©Nr)ÚIndentSearcherrLrrrrØ)rÚopenerÚindentedrÚ indentsmallÚ indentlarges r$r zEditorWindow.guess_indent/sq€Ü)¨$¯)©)Ó4×8Ñ8Ó:ш�Ù ‘hÜ.¨v°t·}±}ÓEÑ ˆC�Ü.¨x¸¿¹ÓGÑ ˆC�ð˜[Ñ(Ð(ð)*Ð )ˆK˜+ؘ[Ñ(Ð(r&cóê—|j€y|jjr|jj«d}n|jj«d}|j dd|›d�¬«y)NÚShowÚHidersruz Line Numbers)rDrör{)rìÚis_shownÚ hide_sidebarÚ show_sidebarr”)rr]Ú menu_labels r$rz&EditorWindow.toggle_line_numbers_event8sp€Ø × Ñ Ð $Ø à × Ñ × %Ò %Ø × Ñ × *Ñ *Ô ,؉Jà × Ñ × *Ñ *Ô ,؈JØ ×Ñ I°]Ø(2 |°=Ð%Að õ Cr&)NNNNr&)rCrú)T)“r Ú __module__Ú __qualname__Úidlelib.percolatorr)Úidlelib.colorizerr*r+Ú idlelib.undor,Úidlelib.iomenur-r.r r/Úidlelib.statusbarr0Úidlelib.autocompleter1Úidlelib.autoexpandr2Úidlelib.calltipr3Úidlelib.codecontextr4Úidlelib.sidebarr5Úidlelib.formatr6r7r8r9Úidlelib.parenmatchr:Úidlelib.zoomheightr;rÚgetfilesystemencodingÚfilesystemencodingrwrrrÿr$r¢rÖrÅrÃrÊrgr�r™rúr”rrÐr­r r°r®rÇrÅrÏr©rªr§r¨r£r¤r¥r¬r­rÀrÁrÂr®r¯r±r°r²r³rr«rÇrÈrÉrrïr!r#rçr+r/rñÚstringÚ ascii_lettersÚdigitsr7r:rÜr@rLrVrÚr‹rZròrurär�r–r™r‰rŠr¦rržrŸr®ržr´rœr·rór¼rÀrFrÓrÅršr†rírðrãrørûrrrér´r¶rµr rArr rr\r&r$r(r(3s”„Ý-ß>Ý*ß2Ý Ý0Ý1Ý-Ý'Ý/Ý+ßMÓMÝ-Ý-à2˜×2Ñ2Ó4ÐØ€HàÐØÐØ!ÐóaIóF ò 4òò )òV7ó ;ð ò&€Jò#'òJ )ò1ò 1ò ð €Eò!ðJ ,ð€Kò ò'ò4òóó ó ó òòòó ó ò ò(òòòòòòò òò0ó óó òò:òò %òòKòò .ð×%Ñ%¨¯ © Ñ5¸Ñ;€Jò òAòò" <ò&GòP>ò)ò" "ó,.ò\ ò Fò6%ò"òòFò&òó"òó,ò*ò ò'òòò((òò &ò8ð �9ð €HòEó80ó$BòL"ó"óò$òòò (ó,ò)òV!#òFq#òpò òò)ô Cr&r(có*—tt|««Sr&)rIr�)rös r$rrFs€Ü Œu�U‹|Ó Ðr&z[ \t]*cóœ—tj|«}|j«t|j «j |««fS)zÌReturn a line's indentation as (# chars, effective # of spaces). The effective # of spaces is the length after properly "expanding" the tabs into spaces, as done by str.expandtabs(tabwidth). )Ú_line_indent_rer©rqrQÚgroupr)rXrØr­s r$rrKs;€ô ×јdÓ#€AØ �5‰5‹7”C˜Ÿ™› ×,Ñ,¨XÓ6Ó7Ð 7Ð7r&cóX—eZdZdZd„Zd„Zejejdfd„Z d„Z y)rEz4Manage initial indent guess, returned by run method.cóJ—||_dx|_|_dx|_|_yrD)rLr~ÚfinishedÚ blkopenlineÚ indentedline)rrLs r$r$zIndentSearcher.__init__Xs'€ØˆŒ Ø!"Ð"ˆŒ�”Ø/3Ð3ˆÔ˜4Õ,r&cóÞ—|jry|jdzx}|_t|«dz}|jj |dd«ry|jj ||dz«S)NrBrarûz>=rqz lineend+1c)rkr~rÇrLrNrõ)rr~r s r$ÚreadlinezIndentSearcher.readline]s`€Ø �=Š=ØØ—V‘V˜a‘ZЈˆDŒFÜ�A‹w˜‰~ˆØ �9‰9× Ñ ˜T 4¨Ô /ØØ�y‰y�}‰}˜T 4¨-Ñ#7Ó8Ð8r&)ÚclassÚdefÚforÚifr©ÚtryÚwhileÚwithc ó‚—|jry||k(r ||vr||_y||k(r|jr||_d|_yyy)Nra)rkrlrm) rrKÚtokenÚstartrqrXÚINDENTÚNAMEÚOPENERSs r$Ú tokeneaterzIndentSearcher.tokeneaterfsI€ð �=Š=Ø Ø �TŠ\˜e wÑ.Ø#ˆDÕ Ø �VŠ^ × 0Ò 0Ø $ˆDÔ ØˆD�Mð!1ˆ^r&cóÞ— tj|j«}|D]}|j|ŽŒ |j |jfS#tjt f$rYŒ3wxYw)ztReturn 2 lines containing block opener and and indent. Either the indent line or both may be None. )ÚtokenizeÚgenerate_tokensror}Ú TokenErrorÚ SyntaxErrorrlrm)rÚtokensrxs r$rrzIndentSearcher.runssk€ð  Ü×-Ñ-¨d¯m©mÓ<ˆFÛ�Ø�—‘ Ò'ñ ð ×Ñ ×!2Ñ!2Ð2Ð2øô×#Ñ#¤[Ð1ò á ð ús‚5AÁA,Á+A,N) r rQrRÚ__doc__r$rorrzr{r}rrr\r&r$rErEUs.„Ù:ò4ò 9ð#Ÿ/™/Ø Ÿ ™ ð-ó ó 3r&rEcóR—|jd«}|dk\r|d|||dzdz}||fS)zäExtract the underscore from a string. For example, prepstr("Co_py") returns (2, "Copy"). Args: s: String with underscore. Returns: Tuple of (position of underscore, string without underscore). r3rNra)ró)Úsr~s r$r‚r‚„s:€ð �‰ˆs‹ €A؈A‚vØ ˆbˆqˆE�A�a˜‘c�d�G‰OˆØ ˆaˆ4€Kr&Ú[Ú]Ú/)Ú bracketleftÚ bracketrightÚslashcó —|j|«}|rtj«r|dvry|d}tjdd„|«}tjdd„|«}tjdd|«}tjd d |«}tjd d |«}tjd d|«}tjdd|«}tjdd|«}tjdd|«}|S)akReturn a formatted string for the keybinding of an event. Convert the first keybinding for a given event to a form that can be displayed as an accelerator on the menu. Args: keydefs: Dictionary of valid events to keybindings. eventname: Event to retrieve keybinding for. Returns: Formatted string of the keybinding. >r_rXr`rBrz-[a-z]\bcó>—|j«j«Sr&)rhÚupper©r­s r$r^z!get_accelerator..²s€ a§g¡g£i§o¡oÔ&7r&z\b\w+\bcóf—tj|j«|j««Sr&)Úkeynamesrõrhr�s r$r^z!get_accelerator..´s€¤X§\¡\°!·'±'³)¸Q¿W¹W»YÔ%Gr&zKey-ÚCancelz Ctrl-BreakzControl-zCtrl-rÑÚ+z>6ñ16ðØ�‰ €Aä �‰ˆ{Ñ7¸Ó;€Aä �‰ˆzÑGÈÓK€Aä �‰ˆv�r˜1Ó€Aä �‰ˆx˜ qÓ)€Aä �‰ˆz˜7 AÓ&€Aä �‰ˆs�C˜Ó€Aä �‰ˆt�S˜!Ó€Aä �‰ˆs�B˜Ó€Aä �‰ˆs�B˜Ó€AØ €Hr&cóŽ—|j}|jddd«|jddd«|jddd«y) NÚtcl_wordBreakAfterza brrÓÚ tcl_wordcharsz\wÚtcl_nonwordcharsz\W)r-rÎ)rˆr-s r$Ú fixwordbreaksršÆs?€ð �‰€B؇G�GÐ  %¨Ô+؇G�GˆE�? EÔ*؇G�GˆEÐ% uÕ-r&có@—|}t|«tjddrtjd}nd}tj|d«t ||¬«}|j }d|d<td«D]&}|jdd|zt|«zdz«Œ(y) Nra)rˆré rPérCz r6) ršrÚargvr ÚsetupAppr(rLrPrCrR)r×rˆrrnrLr~s r$Ú_editor_windowr Ïs‡€à €DÜ�$ÔÜ ‡x�x���|Ü—8‘8˜A‘;‰àˆÜ ‡O�O�D˜$ÔÜ ˜T¨HÔ 5€DØ �9‰9€DØ€Dˆ�NÜ �2ŽYˆØ � ‰ �H˜d 1™f¤s¨1£v™o°Ñ4Õ5ñr&Ú__main__)rGzidlelib.idle_test.test_editorrCF)Ú verbosityÚexit)rr):Ú importlib.abcrÔÚimportlib.utilrxr|r¨rbrrrÈrßÚtkinterÚ tkinter.fontrÚ tkinter.ttkrrrÚidlelib.configrr r r r r r Úidlelib.multicallrrrrrÚ idlelib.treerÚ idlelib.utilrrrþÚpython_versionrŒrr%r(rÚcompilergrrEr‚r’rQršr r ÚunittestrGÚidlelib.idle_test.htestrrr\r&r$Úr±sðÛÛÛ ÛÛ Û Û ÛÛÛäÝÝ!Ý Ýå#Ý ÝÝÝÝÝ.ÝÝÝÝÝ$Ý&ÝðÐØÐ/˜×/Ñ/Ó1Ñ1€ Ø �‰˜Ñ !€ò ÷PCñPCòf0ð�"—*‘*˜YÓ'€ò8÷*3ñ*3ò^ð$ØØ ñ €ò ( òV.ò 6ð& ˆzÒÝÙÐ (°A¸EÕBå+ÙˆÕð r&