Ë
    #´˜j¹ ã                   óL  — d dl Zd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dl­ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z# d dlm$Z$ dZ%d ejL                  «       z  Z'ej                  dk(  Z(d„ Z) G d„ d«      Z*d„ Z+ ejX                  d«      Z-d„ Z. G d„ d«      Z/d „ Z0d!d"d#d$œZ1d%„ Z2d&„ Z3d'„ Z4e5d(k(  r d d)l6m7Z7  e7d*d+d,¬-«       d d.l8m9Z9  e9e4«       yy)/é    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                  óŠ   — t         j                  \  } }}}}| › |› �}||› z  }|dk(  r
|d|› �z  }|S |dk7  r||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         ú 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                   ó¸  — e Zd ZddlmZ ddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZmZmZmZ ddl m!Z! ddl"m#Z#  e$jJ                  «       Z&dZ'dZ(dZ)dZ*dwd„Z+dxd„Z,d„ Z-d„ Z.d„ Z/d„ Z0dxd„Z1	 g d¢Z2d„ Z3d„ Z4d„ Z5d„ Z6d„ Z7dZ8d„ Z9d gZ:d!„ Z;d"„ Z<d#„ Z=d$„ Z>dxd%„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À                  z   dDz   ZadE„ 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~dbdciZdd„ 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"  — ddl m} t        j                  �€öt        j
                  j                  t        j                  dd«      }t        j                  j                  d«      r`ddt        j                  d d z  z   }t        j
                  j                  d	«      rd
}nÕd}t        j
                  j                  ||dd«      }n°t        j                  d d dk(  rYdd l}	d}
dt        j                  › d�}	 |	j                  |	j                   |«      }
t        j
                  j'                  |
«      rD|
}nAt        j                  dk(  r.t        j
                  j                  t        j                  d«      }t        j
                  j)                  |«      }t        j
                  j'                  |«      r;|t        _        t        j                  dk(  r<dt        j                  z   t        _        ndt        j                  d d z  t        _        || _        |xs |j,                  }|| _        t/        |«      | _        t3        j4                  || j0                  ¬«      x| _        }|r-|j8                  | _        |j<                  | j6                  _        ni | _        i | j6                  _        t@        jB                  xr. t        j
                  j                  t@        jB                  d«      | _"        d| _#        tI        |«      x| _%        }tM        |d¬«      x| _'        }tA        jP                  dddd¬«      }ddd d|d!tA        jP                  ddd"d¬«      d#œ} tS        tT        «      |fi |¤Žx| _+        }| jV                  | j6                  _,        | j[                  «        | j]                  «        | j6                  j_                  d$| j`                  «       | j6                  jc                  d%| jd                  «       tg        jh                  «       rU|jc                  d%| jd                  «       |jc                  d&| jj                  «       |jc                  d'| jj                  «       n|jc                  d(| jj                  «       |jc                  d)tl        «       |jn                  d*k(  r,|jc                  d+tl        «       |jc                  d,tl        «       |jc                  d-| jp                  «       |jc                  d.| jr                  «       |jc                  d/| jt                  «       |jc                  d0| jv                  «       |jc                  d1| jx                  «       |jc                  d2| jz                  «       |jc                  d3| j|                  «       |jc                  d4| j~                  «       |jc                  d5| j€                  «       |jc                  d6| j‚                  «       |jc                  d7d8„ «       |jc                  d9| j„                  «       |jc                  d:| j†                  «       |jc                  d;| jˆ                  «       |jc                  d<| jŠ                  «       |jc                  d=| jŒ                  «       |jc                  d>| jŽ                  «       |jc                  d?| j�                  «       |jc                  d@| j’                  «       |jc                  dA| j”                  «       |jc                  dB| j–                  «       |jc                  dC| j˜                  «       | j›                  | «      x| _N        }|jc                  dD|jž                  «       |jc                  dE|j                   «       |jc                  dF|j¢                  «       |jc                  dG|j¤                  «       |jc                  dH|j¦                  «       |jc                  dI|j¨                  «       | j«                  | «      }|jc                  dJ|j¬                  «       |jc                  dK|j®                  «       |jc                  dL| j±                  d«      «       |jc                  dM| j±                  dN«      «       |jc                  dO| j²                  «       |jc                  dP| j´                  «       |jc                  dQ| j¶                  «       |r¶||j<                  | <   |r| |j¸                  |<   |jc                  dR| jº                  «       |jc                  dS| j*                  j¼                  «       |jc                  dT| j¾                  «       |jc                  dU| jÀ                  «       |jc                  dV| jÂ                  «       | jÅ                  «        |jÇ                  tÈ        tÊ        dN¬W«       |jÍ                  dNdN¬X«       |jÏ                  dNdN¬X«       | jÐ                  |dY<   |jÓ                  dNdtÔ        ¬Z«       |jÖ                  |d[<   tA        jØ                  | j,                  dd«      |d\<   |jÓ                  dNdNtÔ        ¬Z«       |jÛ                  «        | jÝ                  «        tA        jP                  dd]d^d_¬«      }| | _o        d`| _p        | jà                  | _q        | jå                  «        tç        t@        da«      s| jV                  db   t@        _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–t        j
                  �j                  |«      r]t        j
                  j                  |«      s>|�j                  |«      rEde| _„        | �j                  |«      }| �j                  |«       n|�j                  |«       de| _„        | �j                  «        | jÿ                  «        | �j                  «        | �j                  «        | �j                   �j#                  df«      }|rY|�j%                  dg«      }|€dh}|dk\  r|�j'                  «        |dNz   }|| _”        t3        �j*                  | �j,                  «       �t.        �j0                  | _˜        �t2        �j4                  | _š        �t2        �j6                  | _›        |�j9                  didj«       |�j9                  dkdldmdn«       |�j9                  dodp«       |�j9                  dqdr«       |�j9                  dsdrdtdu«       | �j;                  | | �j<                  «      }|jc                  di|�j>                  «       |jc                  dk|�j@                  «       |jc                  dv|�jB                  «       |jc                  dw| �jE                  | «      �jF                  «       |jc                  dx| �jI                  | «      �jJ                  «       | �jM                  | «      }|jc                  dy|�jN                  «       |jc                  ds|�jP                  «        || «      }|jc                  dz|�jR                  «       |jc                  d{|�jT                  «       |jc                  d||�jV                  «       |jc                  d}| �jY                  | «      �jZ                  «       | �j]                  | «      x| _¯        }|jc                  do|�j`                  «       |jc                  dq|�jb                  «       |jc                  d~|�jd                  «       |jc                  d| �jg                  | «      �jh                  «       | �jj                  r@| �jm                  | «      | _‡        |jc                  d€| �j                  �jn                  «       n| �jq                  d�d‚dƒ«       | �jr                  r_| �ju                  | «      | _ˆ        tA        jP                  ddd„d_¬«      r| �jw                  «        |jc                  d…| �jv                  «       y | �jq                  d�d†dƒ«       y # t"        $ r1 	 |	j                  |	j$                  |«      }
n# t"        $ r Y nw xY wY �Œw xY w)‡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Ú zSoftware\Python\PythonCore\z\Help\Main Python Documentationr   z0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/é   )Úmenuzrecent-files.lstÚvbar)ÚnameÚmainr(   ÚwidthÚint©ÚtypeÚtexté   ÚnoneÚwordprocessorÚheight)rF   ÚpadxÚwrapÚhighlightthicknessrH   ÚtabstylerP   ÚWM_DELETE_WINDOWú<<close-window>>z<Control-Button-1>z<2>z<3>z<MouseWheel>Úx11z
<Button-4>z
<Button-5>z<Configure>z<<cut>>z<<copy>>z	<<paste>>z<<center-insert>>z<<help>>z<<python-docs>>z<<about-idle>>z<<open-config-dialog>>ú<<open-module>>z<<do-nothing>>c                  ó   — y©NÚbreak© )Úevents    r$   Ú<lambda>z'EditorWindow.__init__.<locals>.<lambda>¶   s   € °'r&   z<<select-all>>z<<remove-selection>>z<<find>>z<<find-again>>z<<find-in-files>>z<<find-selection>>z<<replace>>ú<<goto-line>>z<<smart-backspace>>z<<newline-and-indent>>z<<smart-indent>>z<<indent-region>>z<<dedent-region>>z<<comment-region>>z<<uncomment-region>>z<<tabify-region>>z<<untabify-region>>z<<toggle-tabs>>ú<<change-indentwidth>>z<Left>z<Right>é   z<<del-word-left>>z<<del-word-right>>z<<beginning-of-line>>z<<open-new-window>>z<<close-all-windows>>z<<open-class-browser>>z<<open-path-browser>>z<<open-turtle-demo>>)ÚsideÚfillÚexpand)ÚweightÚcommand)ÚrowÚcolumnÚstickyÚyscrollcommandÚfontÚIndentz
use-spacesÚboolr   Úblink_off_timeÚinsertofftime)é2   iô  i@KL FTr   Úendéÿÿÿÿz<<autocomplete>>z	<Key-Tab>z<<try-open-completions>>z<KeyRelease-period>z<KeyRelease-slash>z<KeyRelease-backslash>z<<try-open-calltip>>z<KeyRelease-parenleft>z<<refresh-calltip>>z<KeyRelease-parenright>z<<paren-closed>>z<KeyRelease-bracketright>z<KeyRelease-braceright>z<<force-open-completions>>z<<expand-word>>z<<format-paragraph>>z<<flash-paren>>z<<check-module>>z<<run-module>>z<<run-custom>>z<<do-rstrip>>z<<force-open-calltip>>z<<zoom-height>>z<<toggle-code-context>>Úoptionsz*ode*ontextÚdisabledzline-numbers-defaultz<<toggle-line-numbers>>ú*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_framer   rE   Ú	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•   rE   rH   Útext_optionsrL   r·   ÚindentsÚ	usespacesrÞ   rß   rå   Ú	is_py_srcrD   rq   ÚautocompleteÚ
parenmatchÚscriptbindingr  s                                  r$   Ú__init__zEditorWindow.__init__J   s[  € å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   Ã7AC5 ÁC5	AD/ÁC?ADÁDAD/ÁD	AD(ÁD%AD/ÁD'AD(ÁD(AD/ÁD.AD/c                 ó$   — | j                  «        y ©N)rÖ   ©r  r]   s     r$   r¢   zEditorWindow.handle_winconfigm  s   € Ø�‰Õr&   c           	      óD  — | j                   }t        t        |j                  j                  |j                  d«      |j                  d«      g«      «      }|j                  «       d|z  z
  }t        ||j                  d«      ¬«      j                  d«      }||z  | _	        y )NÚborderrQ   rC   rk   )rk   Ú0)
rL   ÚsumÚmapÚtkÚgetintÚcgetÚwinfo_widthr   ÚmeasurerH   )r  rL   Úinner_paddingÚpixel_widthÚzero_char_widths        r$   rÖ   zEditorWindow.set_widthp  sŽ   € Ø�y‰yˆÜœC §¡§¡°·±¸8Ó1DØ15·±¸6Ó1Bð1Dó Eó Fˆà×&Ñ&Ó(¨1¨}Ñ+<Ñ<ˆô �˜DŸI™I fÓ-Ô.×6Ñ6°sÓ;ð 	à  OÑ3ˆ�
r&   c                 ót   — | j                   j                  «       \  }}| j                  j                  |«       yrZ   )rå   Údefaultfilenamer‡   Únew)r  r]   ÚdirnameÚbasenames       r$   rÅ   zEditorWindow.new_callback}  s,   € Ø ŸG™G×3Ñ3Ó5Ñˆ�Ø�
‰
�‰�wÔØr&   c                 ó   — |j                   dz  dk7  r|j                  dk(  ry | j                  j                  d«      rq| j                  j	                  ddd«      rT| j                  j	                  ddd«      r7t        | j                  j                  d«      j                  d«      d	   «      }nI| j                  j                  dd«      }t        t        |«      «      D ]  }||   d
vsŒ n t        |«      }t        | j                  j                  d«      j                  d«      d	   «      }||k(  rd}dt        |«      z   dz   }|j                   d	z  dk(  r| j                  j                  ddd«       �nQ| j                  j                  d«      s| j                  j                  dd«       nˆ| j                  j	                  | j                  j                  d«      d| j                  j                  d«      «      r| j                  j                  dd«       n| j                  j                  dd«       | j                  j                  |«      }| j                  j                  d«      }| j                  j	                  |d|«      r||}}| j                  j                  ddd«       | j                  j                  d||«       | j                  j                  d|«       | j                  j                  d«       y)Né   r   ÚHomeÚiomarkú<=zinsert lineendúinsert linestartÚ.ra   )Ú Ú	Úinsertzinsert linestart+ÚcÚselú1.0rq   ú	sel.firstÚ	my_anchorÚ<úsel.lastÚ>r[   )ÚstateÚkeysymrL   rö   ÚcomparerI   Úsplitrõ   ÚrangeÚlenÚstrÚ
tag_removeÚmark_setÚtag_addÚsee)r  r]   ÚinsertptÚlineÚlineatÚdestÚfirstÚlasts           r$   rÃ   zEditorWindow.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        | j                  ddd¬«      }t        j
                  dk(  r"| j                  j                  ddt        ¬«       | j                  j                  dd	t        ¬«       | j                  j                  d
dt        ¬«       | j                  j                  t        t        ¬«       |j                  t        t        ¬«       | j                  j                  d| j                  «       | j                  j                  ddd«       | j                  j                  | j                  «       y )Nra   Úgrey75)rP   ÚborderwidthÚ
backgroundr   Ú	_padding1z    )rb   rh   zCol: ?rX  zLn: ?)rb   rc   z<<set-line-and-column>>z<KeyRelease>z<ButtonRelease>)r0   rŒ   Ú
status_barr”   r   r|   Ú	set_labelÚRIGHTrË   ÚBOTTOMÚXrL   r�   Úset_line_and_columnrþ   Ú
after_idle)r  Úseps     r$   rÊ   zEditorWindow.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                 óâ   — | j                   j                  t        «      j                  d«      \  }}| j                  j                  dd|z  «       | j                  j                  dd|z  «       y )Nr@  rh   zCol: %srX  zLn: %s)rL   rö   ÚINSERTrO  rb  rc  )r  r]   rX  rh   s       r$   rg  z 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                   }i x| _        }| j                  D ]K  \  }}t        |«      \  }}t	        | |› d�d«      }t        ||d|¬«      x||<   }|j                  |||¬«       ŒM t        j                  «       r&t        |dd¬«      x|d<   }|j                  d	|¬
«       | j                  «        t        | j                   d¬«      | _
        | j                  d   j                  ddd| j                  ¬«       | j                  d   j                  t        «      | _        | j                  «        y)a  Populate 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)rF   ry  ÚapplicationÚIDLE)r{  rD   ©ry  rl  r@   zRecent Files)r{  r|  rD   r   )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ô   rF   r{  r|  rz  rD   s           r$   r™   zEditorWindow.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                 óÒ   — | j                   d   }|j                  d«      }|€d}|| j                  kD  r|j                  | j                  dz   |«       t	        j
                  |«       y)zSCallback to register window.

        Only called when Window menu exists.
        r   rq   Nrr   ra   )rô   rö   rø   Údeleter   Úadd_windows_to_menu)r  rD   rq   s      r$   rú   zEditorWindow.postwindowsmenu  s[   € ð
 �}‰}˜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)r  rD   rö   r{  Úmenuitems        r$   Úupdate_menu_labelzEditorWindow.update_menu_label  ó#   € à—=‘= Ñ&ˆØ×Ñ˜U¨%ÐÕ0r&   c                 óH   — | j                   |   }|j                  ||¬«       y)z$Update state for menu item at index.©rL  Nr‘  )r  rD   rö   rL  r“  s        r$   r  zEditorWindow.update_menu_state  r•  r&   c                 óÎ   — |dk(  rCt        |d   «      }t        | j                  d«      |z  «      | j                  d«      z
  }d}|df} | j                  j                  |g|¢­Ž  y)zHandle scrollbar.Úmovetor   rq   ú@0,0ÚscrollÚunitsr[   )ÚfloatÚroundÚ	getlinenorL   Úyview)r  r]   ÚargsÚfractionÚliness        r$   rÐ   zEditorWindow.handle_yview  si   € à�HÒÜ˜T !™W“~ˆHÜ˜4Ÿ>™>¨%Ó0°8Ñ;Ó<Ø—^‘^ FÓ+ñ,ˆEàˆEØ˜7Ð#ˆDØˆ�	‰	�‰˜Ð% Ó%Ør&   c                 ó  — | j                   }|j                  d|j                  › d|j                  › �«      }	 |j	                  dd|«      xr |j	                  |dd«      }|s%|j                  ddd	«       |j                  d
|«       | j                  s| j                  «        | j                  }|| _
        t        j                  d d dk(  }|r|j                  d¬«       | j                  D ]0  }	 |\  }}	}
|
€Œ t!        | |
«      «       }|j#                  ||¬«       Œ2 |j%                  |j&                  |j(                  «       |r| j                   j                  d¬«       y# t
        $ r d}Y �Œw xY w# t        $ r Y Œ•w xY w)NÚ@Ú,rG  r>  rJ  FrE  rF  rq   rC  r@   rA   Úarrow)Úcursorr—  Úibeamr[   )rL   rö   ÚxÚyrN  ÚTclErrorrS  rT  ÚrmenuÚ
make_rmenur]   r   r|   ÚconfigÚrmenu_specsÚ
ValueErrorrƒ  ÚentryconfigureÚtk_popupÚx_rootÚy_root)r  r]   rL   ÚnewdexÚin_selectionr­  ÚiswinÚitemr{  Ú	eventnameÚverify_staterL  s               r$   r    zEditorWindow.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% Ã1E7Å%E4Å3E4Å7	FÆF)ÚCloserV   Nc                 óâ   — t        | j                  d¬«      }| j                  D ]B  }|d   |d   }}|�$| j                  |fd„}|j                  ||¬«       Œ3|j	                  «        ŒD || _        y )Nr   r€  ra   c                 ó&   — | j                  |«       y r&  ©Úevent_generate©rL   rº  s     r$   rf   z(EditorWindow.make_rmenu.<locals>.commandV  s   € Ø×'Ñ'¨	Õ2r&   ©r{  rf   )r‰   rL   r°  Úadd_commandr÷   r­  )r  r­  r¹  r{  rº  rf   s         r$   r®  zEditorWindow.make_rmenuQ  so   € Ü�T—Y‘Y¨Ô*ˆØ×$Ô$ˆDØ# A™w¨¨Q©�9ˆEØÐ Ø!%§¡°ió 3à×!Ñ!¨°wÐ!Õ?à×#Ñ#Õ%ð %ð ˆ�
r&   c                 ó"   — | j                  «       S r&  )Úrmenu_check_copy©r  s    r$   Úrmenu_check_cutzEditorWindow.rmenu_check_cut]  s   € Ø×$Ñ$Ó&Ð&r&   c                 ód   — 	 | j                   j                  d«      }|rdS dS # t        $ r Y yw xY w)NrG  Únormalrt   ©rL   rö   r¬  )r  Úindxs     r$   rÅ  zEditorWindow.rmenu_check_copy`  s<   € ð	4Ø—9‘9—?‘? ;Ó/ˆDñ  $�8Ð3¨Ð3øô ò 	Ùð	ús   ‚# £	/®/c                 ó†   — 	 | j                   j                  j                  d| j                   d«       y# t        $ r Y yw xY w)Nztk::GetSelectionÚ	CLIPBOARDrÉ  rt   )rL   r-  Úcallr¬  rÆ  s    r$   Úrmenu_check_pastezEditorWindow.rmenu_check_pasteh  s?   € ð	Ø�I‰I�L‰L×ÑÐ0°$·)±)¸[ÔIð øô ò 	Ùð	ús   ‚14 ´	A ¿A c                 óB   — t        j                  | j                  «       y)zHandle Help 'About IDLE' event.r[   )r   ÚAboutDialogrŒ   r'  s     r$   r©   zEditorWindow.about_dialogp  s   € ô 	×Ñ˜tŸx™xÔ(Ør&   c                 óD   — t        j                  | j                  d«       y)z&Handle Options 'Configure IDLE' event.ÚSettingsr[   )r	   ÚConfigDialogrŒ   r'  s     r$   rª   zEditorWindow.config_dialogv  s   € ô 	×!Ñ! $§(¡(¨:Ô6Ør&   c                 óx   — | j                   r| j                   }n| j                  }t        j                  |«       y)zHandle Help 'IDLE Help' event.r[   )rˆ   rŒ   r   Úshow_idlehelp)r  r]   Úparents      r$   r§   zEditorWindow.help_dialog|  s.   € ð �9Š9Ø—Y‘Y‰Fà—X‘XˆFÜ×Ñ˜6Ô"Ør&   c                 ó2  — t         j                  d d dk(  r!	 t        j                  | j                  «       yt        j                  | j                  «       y# t
        $ r5}t        j                  dt        |«      | j                  ¬«       Y d }~yd }~ww xY w)Nr@   rA   úDocument Start Failure©ÚtitleÚmessager×  r[   )r   r|   rx   Ú	startfilerw   ÚOSErrorr   rý   rR  rL   Ú
webbrowserÚopen)r  r]   Úwhys      r$   r¨   zEditorWindow.python_docs†  s~   € Ü�<‰<˜˜Ð˜uÒ$ð8Ü—‘˜TŸ]™]Ô+ð ô �O‰O˜DŸM™MÔ*Øøô ò 8Ü×$Ñ$Ð+CÜ ›H¨T¯Y©Y÷8ñ 8ð ûð8ús   ˜A Á	BÁ!+BÂBc                 ó:   — | j                   j                  d«       y)Nz<<Cut>>r[   ©rL   rÀ  r'  s     r$   r£   zEditorWindow.cut‘  s   € Ø�	‰	× Ñ  Ô+Ør&   c                 ór   — | j                   j                  d«      sy | j                   j                  d«       y)NrE  z<<Copy>>r[   )rL   Ú
tag_rangesrÀ  r'  s     r$   r¤   zEditorWindow.copy•  s,   € Ø�y‰y×#Ñ# EÔ*àØ�	‰	× Ñ  Ô,Ør&   c                 óp   — | j                   j                  d«       | j                   j                  d«       y)Nz	<<Paste>>rC  r[   )rL   rÀ  rV  r'  s     r$   r¥   zEditorWindow.pasteœ  s'   € Ø�	‰	× Ñ  Ô-Ø�	‰	�‰�hÔØr&   c                 ó¬   — | j                   j                  ddd«       | j                   j                  dd«       | j                   j                  d«       y)NrE  rF  zend-1crC  r[   )rL   rU  rT  rV  r'  s     r$   r¬   zEditorWindow.select_all¡  s?   € Ø�	‰	×Ñ˜% ¨Ô1Ø�	‰	×Ñ˜8 UÔ+Ø�	‰	�‰�hÔØr&   c                 ót   — | j                   j                  ddd«       | j                   j                  d«       y)NrE  rF  rq   rC  r[   )rL   rS  rV  r'  s     r$   r­   zEditorWindow.remove_selection§  s+   € Ø�	‰	×Ñ˜U E¨5Ô1Ø�	‰	�‰�hÔØr&   c                 óz   ‡‡‡‡— | j                   j                  Š| j                   j                  ŠdŠˆˆˆˆfd„}|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   •— | j                   dz  dk(  r	  ‰d«        ‰d‰‰   «       y y # t        $ r Y y w xY w)NrM   r   rG  rC  )rL  r¬  )r]   Ú
edge_indexÚedges_tableÚself_text_indexÚself_text_mark_sets    €€€€r$   Úmove_at_edgez<EditorWindow.move_at_edge_if_selection.<locals>.move_at_edge·  sH   ø€ Ø—‘˜a‘ AÒ%ðÙ# KÔ0Ù& x°¸ZÑ1HÕIð &øô  ò Ùðús   •+ «	7¶7)rL   rö   rT  )r  rë  rï  rì  rí  rî  s    ` @@@r$   rÀ   z&EditorWindow.move_at_edge_if_selection¬  s4   û€ ð Ÿ)™)Ÿ/™/ˆØ!ŸY™Y×/Ñ/ÐØ5ˆ÷	ð Ðr&   c                 ó:   — | j                   j                  d«       y)Nz<Meta-Delete>r[   rã  r'  s     r$   rÁ   zEditorWindow.del_word_leftÀ  s   € Ø�	‰	× Ñ  Ô1Ør&   c                 ó:   — | j                   j                  d«       y)Nz<Meta-d>r[   rã  r'  s     r$   rÂ   zEditorWindow.del_word_rightÄ  s   € Ø�	‰	× Ñ  Ô,Ør&   c                 óB   — t        j                  | j                  «       yrZ   )r   ÚfindrL   r'  s     r$   r®   zEditorWindow.find_eventÈ  s   € Ü�‰�D—I‘IÔØr&   c                 óB   — t        j                  | j                  «       yrZ   )r   Ú
find_againrL   r'  s     r$   r¯   zEditorWindow.find_again_eventÌ  s   € Ü×Ñ˜$Ÿ)™)Ô$Ør&   c                 óB   — t        j                  | j                  «       yrZ   )r   Úfind_selectionrL   r'  s     r$   r±   z!EditorWindow.find_selection_eventÐ  s   € Ü×Ñ˜dŸi™iÔ(Ør&   c                 ón   — t        j                   | j                  | j                  | j                  «       yrZ   )r
   rL   rå   r‡   r'  s     r$   r°   z EditorWindow.find_in_files_eventÔ  s!   € Ü�	‰	�$—)‘)˜TŸW™W d§j¡jÔ1Ør&   c                 óB   — t        j                   | j                  «       yrZ   )r   rL   r'  s     r$   r²   zEditorWindow.replace_eventØ  s   € Ü�‰˜Ÿ	™	Ô"Ør&   c                 óô   — | j                   }t        j                  |dd«      j                  }|�I|j	                  ddd«       |j                  d|› d�«       |j                  d«       | j                  «        y)	Nz
Go To Linez/Enter a positive integer
('big' = end of file):rE  rF  rq   rC  ú.0r[   )rL   r   ÚGotoÚresultrS  rT  rV  rg  )r  r]   rL   Úlinenos       r$   r³   zEditorWindow.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  — 	 | j                   j                  dd«      j                  «       }t	        j
                  | j                   dd|«      j                  }|�D| j                  r| j                  j                  |«       |S | j                  j                  |«       |S # t        $ r d}Y Œ�w xY w)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.
        rG  rJ  rB   zOpen ModulezAEnter the name of a Python module
to search on sys.path and open:)rL   rõ   Ústripr¬  r   Ú
ModuleNamerý  r‡   rà  rå   rî   )r  rF   Ú	file_paths      r$   Úopen_modulezEditorWindow.open_moduleê  s¨   € ð	Ø—9‘9—=‘= ¨jÓ9×?Ñ?ÓAˆDô ×$Ñ$Ø—	‘	˜=ð2àó	÷ ‘fð	 	ð
 Ð Ø�zŠzØ—
‘
—‘ 	Ô*ð Ðð —‘× Ñ  Ô+ØÐøô ò 	ØŠDð	ús   ‚*B  Â B.Â-B.c                 ó$   — | j                  «        yrZ   )r  r'  s     r$   r«   zEditorWindow.open_module_event  s   € Ø×ÑÔØr&   c                 óÐ   — | j                   j                  }| j                  j                  dk(  r|s| j	                  «       }|€yddlm} |j                  | j                  |«       y)NÚPyShellEditorWindowr[   r   )Úbrowser)	rå   r  Ú	__class__Ú__name__r  Úidlelibr  ÚModuleBrowserrˆ   )r  r]   r  r  s       r$   rÇ   z EditorWindow.open_module_browser  sX   € Ø—7‘7×#Ñ#ˆØ—‘×'Ñ'Ð+@Ò@ÙØ×'Ñ'Ó)ˆHØÐØÝ#Ø×Ñ˜dŸi™i¨Ô2Ør&   c                 óF   — ddl m} |j                  | j                  «       y)Nr   )Úpathbrowserr[   )r
  r  ÚPathBrowserrˆ   )r  r]   r  s      r$   rÈ   zEditorWindow.open_path_browser  s   € Ý'Ø×Ñ §	¡	Ô*Ør&   c                 óX   — dd l }t        j                  ddg}|j                  |d¬«       y)Nr   z-cz,from turtledemo.__main__ import main; main()F)Úshellr[   )Ú
subprocessr   Ú
executableÚPopen)r  r]   r  Úcmds       r$   rÉ   zEditorWindow.open_turtle_demo  s1   € Ûä�~‰~ØØ=ð?ˆð 	×Ñ˜ EÐÔ*Ør&   c                 óè   — |�p|dkD  rj| j                   j                  dd|z  «       | j                   j                  ddd«       | j                   j                  ddd«       | j	                  «        y y y )Nr   rC  z%d.0rE  rF  rq   z
insert +1l)rL   rT  rS  rU  Úcenter)r  rþ  s     r$   ÚgotolinezEditorWindow.gotoline  sc   € ØÐ &¨1¢*Ø�I‰I×Ñ˜x¨°&©Ô9Ø�I‰I× Ñ  ¨¨uÔ5Ø�I‰I×Ñ˜e X¨|Ô<Ø�K‰K�Mð	 #-Ðr&   c                 óv  — |rt         j                  j                  |«      ryt         j                  j                  t         j                  j	                  |«      «      \  }}t         j                  j                  |«      t        v ry| j                  j                  dd«      }|j                  d«      xr d|v S )NTrF  z1.0 lineendz#!Úpython)
rx   ry   r~   Úsplitextr9  Únormcaser   rL   rõ   Ú
startswith)r  r  ÚbaseÚextrX  s        r$   rï   zEditorWindow.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   — | j                   r#| j                   j                  | «       d | _         y y r&  )r‡   Úunregister_maybe_terminaterÆ  s    r$   Ú
close_hookzEditorWindow.close_hook/  s'   € Ø�:Š:Ø�J‰J×1Ñ1°$Ô7ØˆD�Jð r&   c                 ó   — || _         y r&  )r!  )r  r!  s     r$   Úset_close_hookzEditorWindow.set_close_hook4  s	   € Ø$ˆ�r&   c                 óÈ   — | j                   r| j                   j                  | «       | j                  «        | j                  j	                  | «       | j                  «        y r&  )r‡   Úfilename_changed_editrä   rŒ   Úupdate_windowlist_registryrñ   rÆ  s    r$   rç   z!EditorWindow.filename_change_hook7  sE   € Ø�:Š:Ø�J‰J×,Ñ,¨TÔ2Ø×ÑÔ Ø�‰×+Ñ+¨DÔ1Ø×ÑÕr&   c                 ó  — | j                   ry | j                  | j                  j                  «      r| j	                  «       | _         | j                   r2| j
                  j                  | j                   | j                  ¬«       y y )N)ÚfilterÚafter)rê   rï   rå   r  r*   rÞ   Úinsertfilterafterrß   rÆ  s    r$   Ú_addcolorizerzEditorWindow._addcolorizer>  s_   € Ø�:Š:ØØ×Ñ˜tŸw™w×/Ñ/Ô0Ø×,Ñ,Ó.ˆDŒJà�:Š:Ø�H‰H×&Ñ&¨d¯j©jÀÇ	Á	Ð&ÕJð r&   c                 óª   — | j                   sy | j                   j                  «        | j                  j                  | j                   «       d | _         y r&  )rê   ÚremovecolorsrÞ   ÚremovefilterrÆ  s    r$   Ú_rmcolorizerzEditorWindow._rmcolorizerG  s9   € Ø�zŠzØØ�
‰
×ÑÔ!Ø�‰×Ñ˜dŸj™jÔ)Øˆ�
r&   c                 ó  — | j                  «        | j                  «        t        j                  | j                  «       | j
                  �| j
                  j                  «        | j                  �| j                  j                  «        yy)zUpdate the color themeN)	r/  r+  r(   r+   rL   rë   Úupdate_highlight_colorsrì   Úupdate_colorsrÆ  s    r$   rñ   zEditorWindow.ResetColorizerN  so   € ð 	×ÑÔØ×ÑÔÜ×!Ñ! $§)¡)Ô,à×ÑÐ(Ø×Ñ×5Ñ5Ô7à×ÑÐ(Ø×Ñ×+Ñ+Õ-ð )r&   Ú_c                 ó0  — |j                  d|«       |j                  |«      }|r$|| j                  v r|j                  d|dz   |«       d|j                  |«      k(  r|j                  d|«       n|j                  d|dz   «       |j	                  |«       y )NÚERRORz
 wordstartÚ
rC  z+1c)rU  rõ   Ú
IDENTCHARSrT  rV  )r  rL   Ú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                 ó”   — t        j                  dddd¬«      }|sd| j                  d<   yt         j                  | j                  d<   y)	z&Update the cursor blink configuration.rG   r(   zcursor-blinkrm   rJ   r   ro   N)r   r–   rL   rn   )r  Úcursorblinks     r$   rÜ   z EditorWindow.update_cursor_blinkh  sC   € ä×(Ñ(Ø˜¨¸VôEˆáØ)*ˆD�I‰I�oÒ&ô *2×)@Ñ)@ˆD�I‰I�oÒ&r&   c                 ó  — | j                   �| j                   j                  «        | j                  �| j                  j                  «        t        j                  | j
                  dd«      }|| j                  d<   | j                  «        y)z.Update the text widgets' font if it is changedNrG   r(   rk   )rë   Úupdate_fontrì   r   rÔ   rˆ   rL   rÖ   )r  Únew_fonts     r$   Ú	ResetFontzEditorWindow.ResetFontr  sr   € ð ×ÑÐ(Ø×Ñ×)Ñ)Ô+ð ×ÑÐ(Ø×Ñ×)Ñ)Ô+ä×#Ñ# D§I¡I¨v°~ÓFˆØ$ˆ�	‰	�&ÑØ�‰Õr&   c                 ó|  — t        j                  «       x| j                  _        }|j	                  «       D ]"  \  }} | j
                  j                  |g|¢­Ž  Œ$ | j                  «       D ]O  }t        j                  |«      }|sŒ|j	                  «       D ]"  \  }} | j
                  j                  |g|¢­Ž  Œ$ ŒQ y)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$   ÚRemoveKeybindingszEditorWindow.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ñ Ar&   c                 ó
  — t        j                  «       x| j                  _        }| j	                  «        | j                  «       D ]+  }t        j                  |«      }|sŒ| j	                  |«       Œ- i }| j                  j                  D ]4  }i ||d   <   |d   D ]"  }|sŒ|d   ||d      t        |d   «      d   <   Œ$ Œ6 | j                  D ]²  }| j                  |   }|j                  t        «      }|€Œ*|dz  }t        d|«      D ]u  }	|j                  |	«      dk(  sŒ|j                  |	d«      }
|
sŒ-|j                  |	d«      }d}||v r|||   v r||   |   }|sŒWt        ||«      }
|j!                  |	|
¬«       Œw Œ´ y)	zeApply the virtual, configurable keybindings.

        Also update hotkeys to current keyset.
        r   ra   Nrf   Úacceleratorr{  rB   )rN  )r   rB  r/   rC  rš   rF  rG  Úmenudefsr‚  rô   rö   r‰  rP  rK   Ú	entrycgetÚget_acceleratorr’  )r  rH  rJ  rK  ÚmenuEventDictrD   r¹  ÚmenubarItemrq   rö   ÚaccelÚitemNamer]   s                r$   ÚApplyKeybindingszEditorWindow.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   — | j                   st        j                  dddd¬«      | _        yy)zCUpdate the indentwidth if changed and not using tabs in this windowrG   rl   z
num-spacesrI   rJ   N)r×   r   r–   rÙ   rÆ  s    r$   rÚ   z#EditorWindow.set_notabs_indentwidthº  s,   € ð �|Š|Ü'×1Ñ1°&¸(À<Ø7<ô >ˆDÕð r&   c                 ót  — t        j                  «       }| j                  d   }|j                  t        «      }|| j
                  kD  r|j                  | j
                  dz   |«       |rA|j                  «        |D ],  }| j                  |d   «      }|j                  |d   |¬«       Œ. || j                  d<   y)z4Update the additional help entries on the Help menu.r   ra   r   rÂ  N)
r   ÚGetAllExtraHelpSourcesListrô   rö   r‰  rŠ  rŽ  r÷   Ú_extra_help_callbackrÃ  )r  Ú	help_listÚhelpmenuÚhelpmenu_lengthÚentryr  s         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ˆ fd„	}|S )z9Return a callback that loads resource (file or web page).c                 ól  •— | j                  d«      st        j                  j                  | «      } t        j
                  d d dk(  r	 t        j                  | «       y t        j                  | «       y # t        $ r5}t        j                  dt        |«      ‰j                  ¬«       Y d }~y d }~ww xY w)N)ÚwwwÚhttpr@   rA   rÙ  rÚ  )r  rx   ry   r†   r   r|   rÝ  rÞ  r   rý   rR  rL   rß  rà  )Úhelpfilerá  r  s     €r$   Údisplay_extra_helpz=EditorWindow._extra_help_callback.<locals>.display_extra_helpÔ  sŒ   ø€ Ø×&Ñ& Ô7ÜŸ7™7×+Ñ+¨HÓ5�Ü�|‰|˜B˜QÐ 5Ò(ð<Ü—L‘L Õ*ô
 —‘ Õ)øô	 ò <Ü×(Ñ(Ð/GÜ # C£°·±÷<ò <ûð<ús   Á	A5 Á5	B3Á>+B.Â.B3r\   )r  Úresourcerd  s   `  r$   rZ  z!EditorWindow._extra_help_callbackÒ  s   ø€ à(0õ 
	*ð "Ð!r&   c                 óŠ  — g }| j                   }|rFt        j                  j                  |«      r't	        |dd¬«      5 }|j                  «       }ddd«       |rIt        j                  j                  |«      dz   }||v r|j                  |«       |j                  d|«       g }|D ]:  }d|v s#t        j                  j                  |dd «      rŒ*|j                  |«       Œ< |D �cg c]	  }||vsŒ|‘Œ }}d	}|dt        |«       }|r*	 t	        |d
dd¬«      5 }|j                  |«       ddd«       | j&                  j(                  D ]u  }
|
j*                  }|j-                  dt.        «       t1        |«      D ]C  \  }}|j3                  «       }|
j5                  |«      }|j7                  ||   dz   |z   |d¬«       ŒE Œw y# 1 sw Y   �ŒuxY wc c}w # 1 sw Y   ŒªxY w# t        $ rY}	t        | j                  dd«      s7d| j                  _        t!        j"                  dd|	› d�| j$                  ¬«       Y d}	~	�Œ
d}	~	ww xY w)z/Load and update the recent files list and menusÚutf_8r   )r.   ÚerrorsNr6  r   Ú rr   Ú1234567890ABCDEFGHIJKÚwÚrecentfiles_messageFTzIDLE Warningz)Cannot save Recent Files list to disk.
  z
Select OK to continue.rÚ  rA  )r{  rf   r|  )r’   rx   ry   rí   rà  Ú	readlinesÚabspathÚremoverC  ÚappendrQ  Ú
writelinesrÞ  rƒ  rˆ   rl  r   ÚshowwarningrL   rŒ   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Ã1GÄ
G  ÄGÄ+G  ÇGÇGÇG  Ç 	IÇ)AH=È=Ic                 ó   ‡ — |fˆ fd„	}|S )Nc                 ó>   •— ‰j                   j                  | ¬«       y )N)ÚeditFile)rå   rà  )Ú
fn_closurer  s    €r$   Úopen_recent_filez=EditorWindow.__recent_file_callback.<locals>.open_recent_file  s   ø€ Ø�G‰G�L‰L *ˆLÕ-r&   r\   )r  r  r…  s   `  r$   Ú__recent_file_callbackz#EditorWindow.__recent_file_callback  s   ø€ Ø(1õ 	.àÐr&   c                 ó  — | j                  «       }| j                  «       }|r&|r$t        j                  «       s|dz   |z   t        z   }n|r|}n|r|}nd}|xs |xs |}| j                  «       s
d|z  }d|z  }| j                  j                  |«       | j                  j                  |«       t        j                  «       rH| j                  j                  d|«       | j                  j                  d| j                  «        «       y y )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ä   zEditorWindow.saved_change_hook  sê   € Ø× Ñ Ó"ˆØ�‰Ó ˆÙ‘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   — | j                   j                  «       S r&  )rß   r�  rÆ  s    r$   r�  zEditorWindow.get_saved/  s   € Ø�y‰y×"Ñ"Ó$Ð$r&   c                 ó:   — | j                   j                  |«       y r&  )rß   Ú	set_saved)r  Úflags     r$   r–  zEditorWindow.set_saved2  s   € Ø�	‰	×Ñ˜DÕ!r&   c                 ó8   — | j                   j                  «        y r&  )rß   Ú
reset_undorÆ  s    r$   r™  zEditorWindow.reset_undo5  s   € Ø�	‰	×ÑÕr&   c                 ót   — | j                   j                  }|rt        j                  j	                  |«      S dS )Nrˆ  )rå   r  rx   ry   r9  )r  r  s     r$   r‰  zEditorWindow.short_title8  s-   € Ø—7‘7×#Ñ#ˆÙ-5Œr�w‰w×Ñ Ó)ÐE¸:ÐEr&   c                 ó6   — | j                   j                  xs dS )NrB   )rå   r  rÆ  s    r$   rŠ  zEditorWindow.long_title<  s   € Ø�w‰w×ÑÒ% 2Ð%r&   c                 ó$   — | j                  «        yrZ   )r  r'  s     r$   r¦   z EditorWindow.center_insert_event?  s   € Ø�‰ŒØr&   c                 óÆ   — | j                   }| j                  «       \  }}| j                  |«      }||z
  }t        d||dz  z
  «      }|j	                  t        |«      «       y )Nra   rC   )rL   ÚgetwindowlinesrŸ  Úmaxr   r�  )r  ÚmarkrL   rŒ   Úbotrþ  rP   Únewtops           r$   r  zEditorWindow.centerC  sY   € Ø�y‰yˆØ×&Ñ&Ó(‰ˆˆSØ—‘ Ó%ˆØ�s‘ˆÜ�Q˜ ¨¡Ñ*Ó+ˆØ�
‰
”5˜“=Õ!r&   c                 óÂ   — | j                   }| j                  d«      }| j                  d«      }||k(  r)|j                  «       dk(  rt        |d   «      }||z   dz
  }||fS )Nrš  z@0,65535ra   rP   )rL   rŸ  Úwinfo_heightrI   )r  rL   rŒ   r¡  rP   s        r$   rž  zEditorWindow.getwindowlinesK  sc   € Ø�y‰yˆØ�n‰n˜VÓ$ˆØ�n‰n˜ZÓ(ˆØ�#Š:˜$×+Ñ+Ó-°Ò2ä˜˜h™Ó(ˆFØ˜‘, Ñ"ˆCØ�Cˆxˆr&   c                 ó`   — | j                   }t        t        |j                  |«      «      «      S r&  )rL   rI   r�  rö   )r  r   rL   s      r$   rŸ  zEditorWindow.getlinenoU  s$   € Ø�y‰yˆÜ”5˜Ÿ™ DÓ)Ó*Ó+Ð+r&   c                 ó°   — | j                   j                  «       }t        j                  d|«      }t	        t        t        |j                  «       «      «      S )zReturn (width, height, x, y)z(\d+)x(\d+)\+(-?\d+)\+(-?\d+))rŒ   Úwm_geometryÚreÚmatchÚlistr,  rI   Úgroups)r  ÚgeomÚms      r$   Úget_geometryzEditorWindow.get_geometryY  s=   € à�x‰x×#Ñ#Ó%ˆÜ�H‰HÐ5°tÓ<ˆÜ”Cœ˜QŸX™X›ZÓ(Ó)Ð)r&   c                 ó$   — | j                  «        yrZ   )rœ   r'  s     r$   rž   zEditorWindow.close_event_  s   € Ø�
‰
ŒØr&   c                 óF  — | j                   r•| j                  «       sk| j                  j                  «       dk7  r| j                  j	                  «        | j                  j                  «        | j                  j                  «        | j                   j                  «       S y )NrÉ  )rå   r�  rŒ   rL  Ú	deiconifyÚlowerÚliftÚ	maybesaverÆ  s    r$   r´  zEditorWindow.maybesavec  si   € Ø�7Š7Ø—>‘>Ô#Ø—8‘8—>‘>Ó# XÒ-Ø—H‘H×&Ñ&Ô(Ø—‘—‘Ô Ø—‘—‘”Ø—7‘7×$Ñ$Ó&Ð&ð r&   c                 ó‚   — 	 | j                  «       }t        |«      dk7  r| j                  «        |S # t        $ r Y y w xY w)NÚcancel)r´  rR  Ú_closeÚAttributeError)r  Úreplys     r$   rœ   zEditorWindow.closel  s?   € ð	Ø—N‘NÓ$ˆEÜ�5‹z˜XÒ%Ø—‘”ØˆLøÜò 	Ùð	ús   ‚/2 ²	>½>c                 óP  — | j                   j                  r&| j                  | j                   j                  ¬«       t        j                  | j
                  «       | j                  «        | j                   j                  «        d | _         d | _        | j                  r!| j                  j                  «        d | _	        d | _
        d | _        | j                  j                  «        d | _        | j                  j                  «        | j                  r| j                  «        y y )N)rv  )rå   r  rò   r   Úunregister_callbackrú   Úunload_extensionsrœ   rß   rê   rL   rŽ   rÞ   rŒ   Údestroyr!  rÆ  s    r$   r·  zEditorWindow._closeu  sÍ   € Ø�7‰7×ÒØ×)Ñ)°4·7±7×3CÑ3CÐ)ÔDÜ×"Ñ" 4×#7Ñ#7Ô8Ø×ÑÔ Ø�‰�‰ŒØˆŒØˆŒ	Ø�:Š:Ø�J‰J×ÑÔØˆDŒJØˆŒ	Ø ˆÔØ�‰�‰ÔØˆŒØ�‰×ÑÔØ�?Š?à�O‰OÕð r&   c                 ó2   — i | _         | j                  «        y r&  )Ú
extensionsÚload_standard_extensionsrÆ  s    r$   ró   zEditorWindow.load_extensions‰  s   € ØˆŒØ×%Ñ%Õ'r&   c                 óœ   — t        | j                  j                  «       «      D ]  }t        |d«      sŒ|j	                  «        Œ! i | _        y )Nrœ   )rª  r¿  ÚvaluesrÛ   rœ   )r  Úinss     r$   r¼  zEditorWindow.unload_extensions�  s:   € Ü˜Ÿ™×.Ñ.Ó0Ö1ˆCÜ�s˜GÕ$Ø—	‘	•ð 2ð ˆ�r&   c                 ó²   — | j                  «       D ]  }	 | j                  |«       Œ y #  t        dt        |«      «       t	        j
                  «        Y ŒExY w)NzFailed to load extension)rF  Úload_extensionÚprintÚreprÚ	tracebackÚ	print_exc)r  rF   s     r$   rÀ  z%EditorWindow.load_standard_extensions“  sJ   € Ø×5Ñ5Ö7ˆDð&Ø×#Ñ# DÕ)ñ 8øð&ÜÐ0´$°t³*Ô=Ü×#Ñ#Ö%ús	   •)©+Ac                 ó.   — t        j                  d¬«      S )NT)Úeditor_only)r   ÚGetExtensionsrÆ  s    r$   rF  z)EditorWindow.get_standard_extension_names›  s   € Ü×%Ñ%°$Ô7Ð7r&   ÚZzDummyÚzzdummyc                 óè  — | j                   j                  ||«      }	 	 t        j                  d|z   t        ¬«      }t        ||«      }t        j                  |«      }t        |d«      r| j                  |j                  |«        || «      }|| j                  |<   |r�| j                  |«       |D ]x  }|j!                  dd«      }|d d dk(  r|dd  }|d d dk(  rŒ|d	d  d
k(  r|d d	 }|d	d  d
k(  rŒ|dz   }t        ||«      sŒS| j"                  j%                  |t        ||«      «       Œz y y # t
        t        f$ r t        j                  |«      }Y �Œw xY w# t
        $ r t        d|«       ‚ w xY w)Nr@  )Úpackagez
Failed to import extension: rO  Ú-r3  ra   rI  rr   rK  Ú_event)Úextfilesrõ   Ú	importlibÚimport_moduleÚ__package__ÚImportErrorÚ	TypeErrorrÆ  rƒ  r   rG  rÛ   r†  rO  r¿  rš   r   rL   r�   )	r  rF   ÚfnameÚmodÚclsrH  rÃ  ÚveventÚ
methodnames	            r$   rÅ  zEditorWindow.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 ÅE1c                 ó¶   — |€| j                   j                  }| j                  }||_        |j	                  «       D ]  \  }}|sŒ	 |j
                  |g|¢­Ž  Œ y)z"Add events with keys to self.text.N)r/   rC  rL   rH  rD  rþ   )r  rH  rL   r]   rI  s        r$   rš   zEditorWindow.apply_bindings¾  sP   € àˆ?Ø—m‘m×3Ñ3ˆGØ�y‰yˆØˆŒØ%Ÿm™mžo‰NˆE�7ÚØ�—‘˜uÐ/ wÔ/ñ .r&   c           	      óô  — |€| j                   j                  }|€| j                   j                  }| j                  }| j                  }|D ]«  \  }}|j                  |«      }|sŒ|D ]�  }|€|j                  «        Œ|\  }	}
|	dd dk(  }|r|	dd }	t        |	«      \  }}	t        ||
«      }||
fd„}|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                  |«       y r&  r¿  rÁ  s     r$   rf   z(EditorWindow.fill_menus.<locals>.commandâ  s   € Ø×+Ñ+¨IÕ6r&   )r{  r|  rf   rN  Úvariable)r{  r|  rf   rN  )r/   rO  rC  rô   rL   rõ   r÷   r‚  rQ  Úget_var_objÚ
BooleanVarÚadd_checkbuttonrÃ  )r  rO  rH  rô   rL   ÚmnameÚ	entrylistrD   r^  r{  rº  Úcheckbuttonr|  rN  rf   Úvars                   r$   r†  zEditorWindow.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                  «       }|S t        |«      ‚r&  )rã  rõ   Ú	NameError)r  rF   ré  Úvalues       r$   ÚgetvarzEditorWindow.getvarî  s/   € Ø×Ñ˜tÓ$ˆÙØ—G‘G“IˆEØˆLä˜D“/Ð!r&   c                 ód   — | j                  ||«      }|r|j                  |«       y t        |«      ‚r&  )rã  rÓ   rë  )r  rF   rì  Úvartyperé  s        r$   ÚsetvarzEditorWindow.setvarö  s,   € Ø×Ñ˜t WÓ-ˆÙØ�G‰G�E�Nä˜D“/Ð!r&   c                 ó†   — | j                   j                  |«      }|s#|r! || j                  «      x| j                   |<   }|S )z:Return a tkinter variable instance for the event.
        )rŽ   rõ   rL   )r  rº  rï  ré  s       r$   rã  zEditorWindow.get_var_objý  sB   € ð ×Ñ×#Ñ# IÓ.ˆÙ‘wá18¸¿¹Ó1CÐCˆD×Ñ˜iÑ(¨3Øˆ
r&   c                 ó’   — | j                   r;| j                  j                  d|«      xs d| j                  j                  |«      v S y)NÚTODOÚSTRINGra   )rê   rL   Útag_prevrangeÚ	tag_names)r  Ú
text_indexs     r$   Úis_char_in_stringzEditorWindow.is_char_in_string  sE   € Ø�:Š:ð —9‘9×*Ñ*¨6°:Ó>ò ?Ø˜tŸy™y×2Ñ2°:Ó>Ð>ð?ð r&   c                 ó–   — 	 | j                   j                  d«      }| j                   j                  d«      }||fS # t        $ r Y yw xY w)NrG  rJ  ©NNrÊ  )r  r[  r\  s      r$   Úget_selection_indicesz"EditorWindow.get_selection_indices  sG   € ð	Ø—I‘I—O‘O KÓ0ˆEØ—9‘9—?‘? :Ó.ˆDØ˜$�;ÐøÜò 	Ùð	ús   ‚9< ¼	AÁAc                 óF   — | j                   d   xs t        }t        |«      S )NÚtabs)rL   ÚTK_TABWIDTH_DEFAULTrI   )r  Úcurrents     r$   Úget_tk_tabwidthzEditorWindow.get_tk_tabwidth&  s    € Ø—)‘)˜FÑ#Ò:Ô':ˆÜ�7‹|Ðr&   c           	      óÈ   — | j                   }| j                  «       |k7  rC|j                  j                  dd|d   d|j                  d|z  «      }|j                  |¬«       y y )Nrk   r1  z
-displayofÚn)rý  )rL   r   r-  rÎ  ÚmasterÚ	configure)r  ÚnewtabwidthrL   Úpixelss       r$   Úset_tk_tabwidthzEditorWindow.set_tk_tabwidth,  s^   € Ø�y‰yˆØ×ÑÓ! [Ò0à—W‘W—\‘\ &¨)°T¸&±\Ø".°·±Ø"%¨Ñ"3ó5ˆFð �N‰N ˆNÕ'ð 1r&   c                 óÌ   — |rG|rE| j                  «       }d|cxk  rdk  r
n n|| _        | j                  | j                  k7  rd| _        | j	                  | j                  «       y )NrC   r   F)Úguess_indentrÙ   rØ   r×   r  )r  r   Úguessr~  s       r$   ré   z#EditorWindow.set_indentation_params7  sS   € Ù™Ø×!Ñ!Ó#ˆAØ�AŒ{˜�{Ø#$�Ô Ø×Ñ 4§=¡=Ò0Ø$�”Ø×Ñ˜TŸ]™]Õ+r&   c                 ó  — | j                   }| j                  «       \  }}|r'|r%|j                  ||«       |j                  d|«       y|j	                  dd«      }|dk(  r6|j                  ddd«      r|j                  d«       y|j                  «        y|d   d	vr|j                  d«       y| j                  }t        |j                  |«      «      }|d
kD  sJ ‚|dz
  | j                  z  | j                  z  }d
}		 |d d }|	dz   }	t        |j                  |«      «      }||k  s|d   d	vrnŒ2|j                  «        |j                  d|	z  d«       ||k  r#|j                  dd||z
  z  | j                  «       |j                  «        y)NrC  r[   r?  rB   rK  rF  z	insert-1crr   ú 	r   ra   z
insert-%dcrA  )rL   rû  rŽ  rT  rõ   rN  ÚbellrØ   rQ  Ú
expandtabsrÙ   rá   rC  rÿ   râ   )
r  r]   rL   r[  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        |«      k7  r+| j                  j                  |«      |j                  «        S |j                  ||«       |j                  d|«       |j                  dd«      }t        || j                  «      \  }}|t        |«      k(  r| j                  || j                  z   «       ng| j                  rd}n;t        |j!                  | j                  «      «      }| j                  }	d|	||	z  z
  z  }|j#                  d|| j$                  «       |j'                  d«       	 |j                  «        y# |j                  «        w xY w)NrC  r?  rB  rA  r[   )rL   rû  rá   Ú
index2liner·   r¸   râ   rŽ  rT  rõ   Úget_line_indentrØ   rQ  Úreindent_torÙ   r×   r  rC  rÿ   rV  )
r  r]   rL   r[  r\  ÚprefixÚrawÚ	effectiveÚpadr  s
             r$   r¶   zEditorWindow.smart_indent_eventk  sR  € ð �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= Å=Fc                 ó	  — | j                   }| j                  «       \  }}|j                  «        	 |r&|r$|j                  ||«       |j	                  d|«       |j                  dd«      }dt        |«      }}||k  r||   dv r|dz  }||k  r||   dv rŒ||k(  r@|j                  dd| j                  «       	 |j                  d«       |j                  «        y|d| }d}|r|d	   dv r|dd	 }|dz  }|r|d	   dv rŒ|r|j                  d
|z  d«       |j                  d«      dv r%|j                  d«       |j                  d«      dv rŒ%|j                  dd| j                  «       t        |j                  d«      «      }	t        j                  | j                  | j                   «      }
| j"                  s�| j$                  D ]k  }t'        |	|z
  d«      }t)        |«      dz   }|j                  |d«      }|
j+                  |«       |
j-                  | j/                  |«      «      }|€|dk(  sŒk n |
j1                  xs d«       nP|j3                  dd«      }|r|d   }nd}|j                  |d«      }|
j+                  |«       |
j1                  d«       |
j5                  «       }|t        j6                  k7  �r	|t        j8                  k(  rnÒ|t        j:                  k(  r|j                  d|| j                  «       n¡|t        j<                  k(  r | j?                  |
jA                  «       «       nn|t        jB                  k(  rQ|
jE                  «       dkD  r|j                  d|| j                  «       n*| j?                  |
jG                  «       «       n
J d|›�«       ‚	 |j                  d«       |j                  «        y|
jI                  «       }|j                  d|| j                  «       |
jK                  «       r| jM                  |«       n#|r!|
jO                  «       r| jQ                  |«       	 |j                  d«       |j                  «        y# |j                  d«       |j                  «        w xY w)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.
        rC  r?  r   r  ra   r6  r[   Nrr   zinsert - %d charsrû  ÚconsolerF  zbogus continuation type ))rL   rû  rá   rŽ  rT  rõ   rQ  rC  rÿ   rV  râ   r  rö   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´   )r  r]   rL   r[  r\  rX  r~  r  ÚindentÚlnor«  ÚcontextÚstartatÚstartatindexÚrawtextÚbodÚrrD  s                     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 Ã?AQ ÅC#Q È2E3Q ÏA2Q Ñ#R c                 ó&   — || j                   fd„}|S )Nc                 ó   —  ||d| z  z   «      S )Nz+%dcr\   )ÚoffsetÚ_startindexÚ_iciss      r$   Úinnerz6EditorWindow._build_char_in_string_func.<locals>.inner  s   € á˜ v°¡Ñ6Ó7Ð7r&   )rø  )r  Ú
startindexr;  s      r$   r   z'EditorWindow._build_char_in_string_func  s   € Ø&0Ø×.Ñ.ó	8ð ˆr&   c                 ól   — | j                   r$t        || j                  «      \  }}d|z  d|z  z   S d|z  S )NrB  rA  )r×   ÚdivmodrØ   )r  r  ÚntabsÚnspacess       r$   Ú_make_blankszEditorWindow._make_blanks  s9   € Ø�<Š<Ü# A t§}¡}Ó5‰NˆE�7Ø˜%‘< #¨¡-Ñ/Ð/à˜‘7ˆNr&   c                 ó  — | j                   }|j                  «        |j                  ddd«      r|j                  dd«       |r,|j	                  d| j                  |«      | j                  «       |j                  «        y )Nr?  z!=rC  )rL   rá   rN  rŽ  rC  rA  rÿ   râ   )r  rh   rL   s      r$   r  zEditorWindow.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
  S dx}}||z
  S ©Nr   )ÚIndentSearcherrL   rr  r  rØ   )r  ÚopenerÚindentedr  ÚindentsmallÚindentlarges         r$   r	  zEditorWindow.guess_indent/  sq   € Ü)¨$¯)©)Ó4×8Ñ8Ó:Ñˆ�Ù‘hÜ.¨v°t·}±}ÓEÑˆC�Ü.¨x¸¿¹ÓGÑˆC�ð ˜[Ñ(Ð(ð )*Ð)ˆK˜+Ø˜[Ñ(Ð(r&   c                 óê   — | j                   €y | j                   j                  r| j                   j                  «        d}n| j                   j                  «        d}| j	                  dd|› d�¬«       y )NÚShowÚHiders   ru   z Line Numbers)rD   rö   r{  )rì   Úis_shownÚhide_sidebarÚshow_sidebarr”  )r  r]   Ú
menu_labels      r$   r  z&EditorWindow.toggle_line_numbers_event8  sp   € Ø×ÑÐ$Øà×Ñ×%Ò%Ø×Ñ×*Ñ*Ô,Ø‰Jà×Ñ×*Ñ*Ô,ØˆJØ×Ñ I°]Ø(2 |°=Ð%Að 	õ 	Cr&   )NNNNr&  )rC  rú  )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.formatr6   r7   r8   r9   Úidlelib.parenmatchr:   Úidlelib.zoomheightr;   r   ÚgetfilesystemencodingÚfilesystemencodingrw   r  r  rÿ   r$  r¢   rÖ   rÅ   rÃ   rÊ   rg  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Â   r®   r¯   r±   r°   r²   r³   r  r«   rÇ   rÈ   rÉ   r  rï   r!  r#  rç   r+  r/  rñ   ÚstringÚascii_lettersÚdigitsr7  r:  rÜ   r@  rL  rV  rÚ   r‹  rZ  rò   ru  rä   r�  r–  r™  r‰  rŠ  r¦   r  rž  rŸ  r®  rž   r´  rœ   r·  ró   r¼  rÀ  rF  rÓ  rÅ  rš   r†  rí  rð  rã  rø  rû  r   r  ré   r´   r¶   rµ   r   rA  r  r	  r  r\   r&   r$   r(   r(   3   s”  „ Ý-ß>Ý*ß2Ý Ý0Ý1Ý-Ý'Ý/Ý+ßMÓMÝ-Ý-à2˜×2Ñ2Ó4ÐØ€HàÐØÐØ!ÐóaIóF	ò4òò
)òV7ó ;ðò&€Jò#'òJ)ò1ò
1ò
	ð €Eò!ðJ 	,ð€Kò

ò'ò4òóóóó	òòòó
óò
ò(òòòòòòòòò0ó	óó
òò:òò
%òòKòò.ð ×%Ñ%¨¯©Ñ5¸Ñ;€Jò	òAòò"<ò&GòP>ò)ò""ó,.ò\ ò
Fò6%ò"òòFò&òó"òó,ò*òò'òòò((òò&ò8ð 	�9ð
€HòEó80ó$BòL"ó"óò$òòò(ó,ò)òV!#òFq#òpò òò)ôCr&   r(   c                 ó*   — t        t        | «      «      S r&  )rI   r�  )rö   s    r$   r  r  F  s   € ÜŒu�U‹|ÓÐr&   z[ \t]*c                 óœ   — t         j                  | «      }|j                  «       t        |j	                  «       j                  |«      «      fS )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©  rq   rQ  Úgroupr  )rX  rØ   r­  s      r$   r  r  K  s;   € ô 	×Ñ˜dÓ#€AØ�5‰5‹7”C˜Ÿ™›	×,Ñ,¨XÓ6Ó7Ð7Ð7r&   c                   óX   — e Zd ZdZd„ Zd„ Zej                  ej                  dfd„Z	d„ Z
y)rE  z4Manage initial indent guess, returned by run method.c                 óJ   — || _         dx| _        | _        d x| _        | _        y rD  )rL   r~  ÚfinishedÚblkopenlineÚindentedline)r  rL   s     r$   r$  zIndentSearcher.__init__X  s'   € ØˆŒ	Ø!"Ð"ˆŒ�”Ø/3Ð3ˆÔ˜4Õ,r&   c                 óÞ   — | j                   ry| j                  dz   x}| _        t        |«      dz   }| j                  j	                  |dd«      ry| j                  j                  ||dz   «      S )NrB   ra   rû  z>=rq   z lineend+1c)rk  r~  rÇ  rL   rN  rõ   )r  r~  r   s      r$   ÚreadlinezIndentSearcher.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	                 ó‚   — | j                   ry ||k(  r||v r|| _        y ||k(  r| j                  r|| _        d| _         y y y )Nra   )rk  rl  rm  )	r  rK   ÚtokenÚstartrq   rX  ÚINDENTÚNAMEÚOPENERSs	            r$   Ú
tokeneaterzIndentSearcher.tokeneaterf  sI   € ð
 �=Š=ØØ�TŠ\˜e wÑ.Ø#ˆDÕØ�VŠ^ × 0Ò 0Ø $ˆDÔØˆD�Mð !1ˆ^r&   c                 óÞ   — 	 t        j                  | j                  «      }|D ]  } | j                  |Ž  Œ 	 | j                  | j                  fS # t         j                  t
        f$ r Y Œ3w xY w)ztReturn 2 lines containing block opener and and indent.

        Either the indent line or both may be None.
        )ÚtokenizeÚgenerate_tokensro  r}  Ú
TokenErrorÚSyntaxErrorrl  rm  )r  Útokensrx  s      r$   rr  zIndentSearcher.runs  sk   € ð
	Ü×-Ñ-¨d¯m©mÓ<ˆFÛ�Ø�—‘ Ò'ñ  ð
 ×Ñ ×!2Ñ!2Ð2Ð2øô ×#Ñ#¤[Ð1ò 	áð	ús   ‚5A ÁA,Á+A,N)r	  rQ  rR  Ú__doc__r$  ro  r  rz  r{  r}  rr  r\   r&   r$   rE  rE  U  s.   „ Ù:ò4ò
9ð #Ÿ/™/Ø Ÿ™ð-óó3r&   rE  c                 óR   — | j                  d«      }|dk\  r| d| | |dz   d z   } || fS )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).
    r3  r   Nra   )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                  |«      }|rt        j                  «       r|dv ry|d   }t        j                  dd„ |«      }t        j                  dd„ |«      }t        j                  dd|«      }t        j                  d	d
|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }|S )ak  Return 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_   rX   r`   rB   r   z-[a-z]\bc                 ó>   — | j                  «       j                  «       S r&  )rh  Úupper©r­  s    r$   r^   z!get_accelerator.<locals>.<lambda>²  s   €  a§g¡g£i§o¡oÔ&7r&   z\b\w+\bc                 óf   — t         j                  | j                  «       | j                  «       «      S r&  )Úkeynamesrõ   rh  r�  s    r$   r^   z!get_accelerator.<locals>.<lambda>´  s   € ¤X§\¡\°!·'±'³)¸Q¿W¹W»YÔ%Gr&   zKey-ÚCancelz
Ctrl-BreakzControl-zCtrl-rÑ  Ú+z><rA  rI  rK  )rõ   r   r‹  r¨  Úsub)rH  rº  rI  r†  s       r$   rQ  rQ  ›  så   € ð �k‰k˜)Ó$€Gñ œ×)Ñ)Ô+°	ð >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                   }|j                  ddd«       |j                  ddd«       |j                  ddd«       y )	NÚtcl_wordBreakAfterza br   rÓ   Ú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        |«       t        j                  dd  rt        j                  d   }nd }t        j                  |d «       t        ||¬«      }|j                  }d|d<   t        d«      D ]&  }|j                  dd|z  t        |«      z   dz   «       Œ( y )	Nra   )rˆ   r  é
   rP   é   rC  z  r6  )
rš  r   Úargvr   ÚsetupAppr(   rL   rP  rC  rR  )r×  rˆ   r  rn  rL   r~  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__)rG   zidlelib.idle_test.test_editorrC   F)Ú	verbosityÚexit)rr  ):Úimportlib.abcrÔ  Úimportlib.utilrx   r|   r¨  rb  r   r  rÈ  rß  ÚtkinterÚtkinter.fontr   Útkinter.ttkr   r   r   Úidlelib.configr   r
  r	   r
   r   r   r   Úidlelib.multicallr   r   r   r   r   Úidlelib.treer   Úidlelib.utilr   r   rþ  Úpython_versionrŒ  r   r%   r(   r  Úcompilerg  r  rE  r‚  r’  rQ  rš  r   r	  ÚunittestrG   Úidlelib.idle_test.htestrr  r\   r&   r$   Ú<module>r±     s  ðÛ Û Û 	Û Û 	Û Û 
Û Û Û ä Ý Ý !Ý  Ý å #Ý  Ý Ý Ý Ý Ý .Ý Ý Ý Ý Ý $Ý &Ý ð Ð ØÐ/˜×/Ñ/Ó1Ñ1€Ø	�‰˜Ñ	!€ò
÷PCñ PCòf0ð �"—*‘*˜YÓ'€ò8÷*3ñ *3ò^ð$ ØØ
ñ€ò(òV.ò6ð& ˆzÒÝÙÐ	(°A¸EÕBå+ÙˆÕð r&   