Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 18.191.22.207
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : editor.cpython-311.pyc
�

Tf���X�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlTddlm
Z
ddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddlm$Z$dZ%dej&��zZ'ejdkZ(d�Z)Gd�d��Z*d�Z+ej,d��Z-d�Z.Gd�d��Z/d �Z0d!d"d#d$�Z1d%�Z2d&�Z3d'�Z4e5d(kr'dd)l6m7Z7e7d*d+d,�-��dd.l8m9Z9e9e4��dSdS)/�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
}|dkr	|d|��z
}n|dkr||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      �7/usr/local/python-3.11/lib/python3.11/idlelib/editor.py�_sphinx_versionr%&sw��),�)9�&�E�5�%��������G��%�z��G������=��=�=� ���	�'�	�	��e�A�h�(��(�(�(���N�c��eZdZddlmZddlmZmZddlm	Z	ddl
mZmZddl
mZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZmZmZmZddl m!Z!ddl"m#Z#e$j%��Z&dZ'dZ(dZ)dZ*dxd�Z+dyd�Z,d�Z-d�Z.d�Z/d�Z0dyd�Z1	gd�Z2d�Z3d�Z4d�Z5d�Z6d�Z7dZ8d�Z9d gZ:d!�Z;d"�Z<d#�Z=d$�Z>dyd%�Z?dyd&�Z@dyd'�ZAdyd(�ZBd)�ZCd*�ZDd+�ZEdyd,�ZFdyd-�ZGd.�ZHd/�ZId0�ZJd1�ZKd2�ZLd3�ZMd4�ZNd5�ZOd6�ZPd7�ZQd8�ZRdyd9�ZSdyd:�ZTdyd;�ZUd<�ZVd=�ZWd>�ZXd?�ZYd@�ZZdA�Z[dB�Z\dC�Z]e^j_e^j`zdDzZadE�ZbdF�ZcdG�ZddH�ZedI�ZfdJ�ZgdK�ZhdL�ZidydM�ZjdN�ZkdO�ZldP�ZmdQ�ZndR�ZodS�ZpdT�ZqdU�ZrdzdW�ZsdX�ZtdzdY�ZudZ�Zvd[�Zwd\�Zxd]�Zyd^�Zzd_�Z{d`�Z|da�Z}db�Z~dcddiZde�Z�dydf�Z�d{dg�Z�dh�Z�dydi�Z�dydj�Z�dk�Z�dl�Z�dm�Z�dn�Z�d|do�Z�dp�Z�dq�Z�dr�Z�ds�Z�dt�Z�du�Z�dv�Z�dydw�Z�dS)}�EditorWindowr)�
Percolator)�ColorDelegator�color_config)�
UndoDelegator)�	IOBinding�encoding)�mainmenu)�MultiStatusBar)�AutoComplete)�
AutoExpand)�Calltip)�CodeContext)�LineNumbers)�FormatParagraph�FormatRegion�Indents�Rstrip)�
ParenMatch)�
ZoomHeightNTc�"�ddlm}tj��%tj�tjdd��}tj	�
d��rbddtjdd�zz}tj�d	��rd
}�n	d}tj�||dd��}n�tj	dd�dkr�ddl
}	d
}
dtj�d�}	|	�|	j|��}
n=#t"$r0	|	�|	j|��}
n#t"$rYnwxYwYnwxYwtj�|
��r|
}n:tj	dkr*tj�tjd��}tj�|��}tj�|��r6|t_tj	dkrdtjzt_n!dtjdd�zt_||_|p|j}||_t/|��|_t3j||j���x|_}|r|j|_|j|j_ni|_i|j_t@j!o)tj�t@j!d��|_"d
|_#tI|��x|_%}
tM|
d���x|_'}tAj(dddd���}ddd d|d!tAj(ddd"d���d#�}tStT��|
fi|��x|_+}|j+|j_,|�-��|�.��|j�/d$|j0��|j�1d%|j2��tgj4��rR|�1d%|j2��|�1d&|j5��|�1d'|j5��n|�1d(|j5��|�1d)tl��|j7d*kr6|�1d+tl��|�1d,tl��|�1d-|j8��|�1d.|j9��|�1d/|j:��|�1d0|j;��|�1d1|j<��|�1d2|j=��|�1d3|j>��|�1d4|j?��|�1d5|j@��|�1d6|jA��|�1d7d8���|�1d9|jB��|�1d:|jC��|�1d;|jD��|�1d<|jE��|�1d=|jF��|�1d>|jG��|�1d?|jH��|�1d@|jI��|�1dA|jJ��|�1dB|jK��|�1dC|jL��|�M|��x|_N}|�1dD|jO��|�1dE|jP��|�1dF|jQ��|�1dG|jR��|�1dH|jS��|�1dI|jT��|�U|��}|�1dJ|jV��|�1dK|jW��|�1dL|�Xd����|�1dM|�XdN����|�1dO|jY��|�1dP|jZ��|�1dQ|j[��|r�||j|<|r
||j\|<|�1dR|j]��|�1dS|jj^��|�1dT|j_��|�1dU|j`��|�1dV|ja��|�b��|
�ct�t�dN�W��|
�fdNdN�X��|
�gdNdN�X��|jh|dY<|�idNdt��Z��|jk|d[<tAjl|jdd��|d\<|�idNdNt��Z��|�m��|�n��tAj(dd]d^d_���}||_od`|_p|jp|_q|�r��t�t@da��s|j+dbt@_t|�u��dc|_v|�w|��x|_x}|�y��x|_z}|�{|��|j||_||j}|_}|�~|j��|��|��x|_�}|��|j���dd|_�|��dd��d|_�d|_�d|_�|r�tj��|��rftj�|��sG|��|��r1de|_�|��|��}|��|��n|��|��de|_�|����|���|����|����|j���df��}|rX|��dg��}|�dh}|dkr|����|dNz}||_�t3j�|j����t.j�|_��t2j�|_��t2j�|_�|��didj��|��dkdldmdn��|��dodp��|��dqdr��|��dsdrdtdu��|��||j���}|�1di|j���|�1dk|j���|�1dv|j���|�1dw|��|��j���|�1dx|��|��j���|��|��}|�1dy|j���|�1ds|j���||��}|�1dz|j���|�1d{|j���|�1d||j���|�1d}|��|��j���|��|��x|_�}|�1do|j���|�1dq|j���|�1d~|j���|�1d|��|��j���|j�r;|��|��|_�|�1d�|j�j���n|��d�d�d���|j�rc|��|��|_�tAj(ddd�d_���r|����|�1d�|j���dS|��d�d�d���dS)�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�<<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��dS�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)�2i�i@KLFTr�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�disabledzline-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_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�
scriptbindingrs                               r$�__init__zEditorWindow.__init__Js��3�3�3�3�3�3�� �(��w�|�|�C�O�U�L�I�I�G��|�!�!�'�*�*�
L�&��c�6F�r��r�6J�)J�J���7�=�=�!8�9�9�@�?�G�G�0�H� �g�l�l�8�U�+0�,�@�@�G�G���b�q�b�!�U�*�*��
�
�
���;�c�j�;�;�;���$�/�/��0H�#�N�N�G�G��(�����"(�"3�"3�F�4M�47�#9�#9����,������������	�����7�>�>�'�*�*�&�%�G�����)�)��'�,�,�s��J�L�L���g�&�&�w�/�/�G��w�~�~�g�&�&�
A�(/��%��<�8�+�+�,5��8M�,M�L�)��)I�+.�+;�B�Q�B�+?�*@��%���
��!�u�z����	��D�z�z����.�t�$�,�G�G�G�G���3��	(� %�
�D��&+�%6�D�H�"�"� "�D��%'�D�H�"�!)�!1�"6�b�g�l�l�� �"4�76�76���!#���',�S�z�z�1���*�$�Z�f�=�=�=�=��	�D��"�6�>�7��O�O�O�����&'��+�"�,����u�F�F�F�	�	��2�+�D�1�1�*�M�M��M�M�M��	�D�"&�)��������������������,�d�j�9�9�9���
�
�(�$�*:�;�;�;��?���
	3��I�I�(�$�*:�;�;�;�
�I�I�*�4�+@�A�A�A��I�I�e�T�2�3�3�3�3�
�I�I�e�D�1�2�2�2��	�	�.�+�.�.�.�� �E�)�)��I�I�l�K�0�0�0��I�I�l�K�0�0�0��	�	�-��!6�7�7�7��	�	�)�T�X�&�&�&��	�	�*�d�i�(�(�(��	�	�+�t�z�*�*�*��	�	�%�t�'?�@�@�@��	�	�*�d�.�/�/�/��	�	�#�T�%5�6�6�6��	�	�"�D�$5�6�6�6��	�	�*�D�,>�?�?�?��	�	�#�T�%;�<�<�<��	�	�"�$9�$9�:�:�:��	�	�"�D�O�4�4�4��	�	�(�$�*?�@�@�@��	�	�*�d�o�.�.�.��	�	�"�D�$9�:�:�:��	�	�%�t�'?�@�@�@��	�	�&��(A�B�B�B��	�	�-��!3�4�4�4��	�	�/�4�#7�8�8�8��	�	�'��(B�C�C�C��	�	�*�4�+H�I�I�I��	�	�$�T�%<�=�=�=�!%�!2�!2�4�!8�!8�8���w��	�	�%�w�'B�C�C�C��	�	�%�w�'B�C�C�C��	�	�&��(D�E�E�E��	�	�(�'�*H�I�I�I��	�	�%�w�'B�C�C�C��	�	�'��)F�G�G�G��,�,�t�$�$���	�	�#�W�%>�?�?�?��	�	�*�G�,L�M�M�M��	�	�(�D�:�:�1�=�=�>�>�>��	�	�)�T�;�;�A�>�>�?�?�?��	�	�%�t�'9�:�:�:��	�	�&��(;�<�<�<��	�	�)�4�+=�>�>�>��	E�&)�E��d�#��
'�"&��
�3���I�I�+�T�->�?�?�?��I�I�-�t�z�/L�M�M�M��I�I�.��0H�I�I�I��I�I�-�t�/E�F�F�F��I�I�,�d�.C�D�D�D����������T��Q��7�7�7�����!��,�,�,��"�"�1�Q�"�/�/�/��+��Y���	�	�a��$�	�/�/�/�!%���
���'��	�6�>�J�J��V���	�	�a��$�	�/�/�/��������������&�v�x�'3�&�B�B�B�	�$�}�����
� �=����#�#�%�%�%��x�!1�2�2�	A�&*�i��&@�H�#�� � �"�"�"�"2�������.�.�.���3��-�-�/�/�/��	�D�������� $� 5���#�3����"�"�4�#9�:�:�:��~�~�d�+�+�+���"�
�#�#�D�$=�>�>�>�����#�#�E�*�*�*���
� ��� ����	&��w�~�~�h�'�'�
&���
�
�h�0G�0G�
&��;�;�x�(�(�;�%)�D�N� $� 3� 3�H� =� =�I��/�/�	�:�:�:������)�)�)�!%������������ � � ��%�%�'�'�'��������}� � ��*�*���	;��*�*�U�#�#�C��{����a�x�x��"�"�$�$�$��A�g�� �D�N��$�T�%9�:�:�:�'�1���"�+��
�#�-���	
���)�;�7�7�7����1�3H�+�-E�	G�	G�	G����-�/G�H�H�H����,�.G�H�H�H����)�+D�2�4M�	O�	O�	O�
�(�(��t�/J�K�K���	�	�$�l�&E�F�F�F��	�	�,��9�	;�	;�	;��	�	�.��;�	=�	=�	=��	�	�#�T�_�_�T�%:�%:�%L�M�M�M��	�	�(��&�&�t�,�,�C�	E�	E�	E��_�_�T�*�*�
��	�	�#�Z�%A�B�B�B��	�	�$�j�&C�D�D�D�%�
�d�+�+�
��	�	�$�m�&F�G�G�G��	�	�"�M�$B�C�C�C��	�	�"�M�$B�C�C�C��	�	�/�4�;�;�t�#4�#4�#>�?�?�?��<�<��-�-�-��	�D��	�	�(�$�*E�F�F�F��	�	�'��)C�D�D�D��	�	�*�D�,I�J�J�J��	�	�#�T�_�_�T�%:�%:�%L�M�M�M��"�	I� $� 0� 0�� 6� 6�D���I�I�/��'�A�
C�
C�
C�
C�
�"�"�9�m�Z�H�H�H��"�	I� $� 0� 0�� 6� 6�D���!�&�.�"8�v�G�G�G�
1��.�.�0�0�0��I�I�/��1O�P�P�P�P�P��"�"�9�m�Z�H�H�H�H�Hs6�/D�
E�D2�1E�2
D?�<E�>D?�?E�Ec�.�|���dS�N)r��rr]s  r$r�zEditorWindow.handle_winconfigms���������r&c	�h�|j}tt|jj|�d��|�d��g����}|���d|zz
}t||�d������d��}||z|_	dS)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���C�������8�1D�1D�15���6�1B�1B�1D�E�E�F�F�
��&�&�(�(�1�}�+<�<��
��D�I�I�f�-�-�.�.�.�6�6�s�;�;�	� �O�3��
�
�
r&c�r�|j���\}}|j�|��dSrZ)r��defaultfilenamer��new)rr]�dirname�basenames    r$r�zEditorWindow.new_callback}s3�� �G�3�3�5�5�����
���w�����wr&c��|jdzdkr
|jdkrdS|j�d��ry|j�ddd��r]|j�ddd��rAt|j�d���d��d	��}nU|j�dd��}tt|����D]}||d
vrn�t|��}t|j�d���d��d	��}||krd}dt|��zd
z}|jd	zdkr|j�ddd���nE|j�d��s|j�dd��n�|j�|j�d��d|j�d����r|j�dd��n|j�dd��|j�|��}|j�d��}|j�|d|��r||}}|j�ddd��|j�
d||��|j�d|��|j�d��dS)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�s����K�!�O��!�!�e�l�f�&<�&<��4��9�?�?�8�$�$�	#��9���X�t�-=�>�>�	#��9���/��x�@�@�	#��4�9�?�?�8�4�4�:�:�3�?�?��B�C�C�H�H��9�=�=�!3�5E�F�F�D�!�#�d�)�)�,�,�
#�
#����>��3�3��E�4��T�����T�Y�_�_�X�.�.�4�4�S�9�9�!�<�=�=���v����H�"�3�x�=�=�0��4���K��M�a����I� � ���u�5�5�5�5��9�?�?�;�/�/�
@��	�"�"�;��9�9�9�9��9�$�$�T�Y�_�_�[�%A�%A�3�%)�Y�_�_�X�%>�%>�@�@�@��I�&�&�{�K�@�@�@�@��I�&�&�{�J�?�?�?��I�O�O�D�)�)�E��9�?�?�;�/�/�D��y� � ��s�4�0�0�
(�!�%�d���I� � ���u�5�5�5��I���e�U�D�1�1�1��	���8�T�*�*�*��	�
�
�h�����wr&c��|�|j��|_t|jddd���}tjdkr"|j�ddt���|j�dd	t���|j�d
dt���|j�tt���|�tt���|j�d
|j
��|j�d
dd��|j�|j
��dS)Nra�grey75)rP�borderwidth�
backgroundr�	_padding1z    )rbrhzCol: ?rXzLn: ?)rbrcz<<set-line-and-column>>z<KeyRelease>z<ButtonRelease>)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�7�7����D�H�Q�A�(�K�K�K���<�8�#�#�
�O�%�%�k�6��%�F�F�F���!�!�(�H�5�!�A�A�A���!�!�&�'��!�>�>�>�����&�q��1�1�1����f�1��%�%�%��	���0�$�2J�K�K�K��	���5�*�,=�	?�	?�	?��	���T�5�6�6�6�6�6r&c���|j�t���d��\}}|j�dd|z��|j�dd|z��dS)Nr@rhzCol: %srXzLn: %s)rLr��INSERTrOrbrc)rr]rXrhs    r$rgz EditorWindow.set_line_and_column�sf���y���v�.�.�4�4�S�9�9���f���!�!�(�I��,>�?�?�?���!�!�&�(�T�/�:�:�:�:�:r&))�file�_File)�edit�_Edit)�format�F_ormat)�run�_Run)rs�_Options)r�_Window)r�_Helpc��|j}ix|_}|jD][\}}t|��\}}t	||�d�d��}t||d|���x||<}|�|||����\tj��r.t|dd���x|d<}|�d	|�
��|�	��t|jd���|_
|jd�d
dd|j
���|jd�t��|_|���dS)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�s��� �|��#%�%��
���?�	J�	J�K�D�%�&�u�~�~��I�u�!�$�4�(B�(B�(B�D�I�I�K�$(��D�!�5@�%B�%B�%B�
B�H�T�N�T����5�t�y��I�I�I�I�����	6�-1�$�W�:;�.=�.=�.=�
=�H�]�#�d����6���5�5�5�������!%�d�l�A�!>�!>�!>����
�f��,�,�Q�n�78�26�2H�	-�	J�	J�	J�%)�M�&�$9�$?�$?��$D�$D��!��$�$�&�&�&�&�&r&c���|jd}|�d��}|�d}||jkr|�|jdz|��t	j|��dS)zSCallback to register window.

        Only called when Window menu exists.
        rrqNrrra)r�r�r��deleter�add_windows_to_menu)rrDrqs   r$r�zEditorWindow.postwindowsmenusj��
�}�X�&���j�j������;��C�������K�K���q�(�#�.�.�.��"�4�(�(�(�(�(r&c�N�|j|}|�||���dS)z$Update label for menu item at index.)r{N�r��entryconfig)rrDr�r{�menuitems     r$�update_menu_labelzEditorWindow.update_menu_label�-���=��&�����U�%��0�0�0�0�0r&c�N�|j|}|�||���dS)z$Update state for menu item at index.�rLNr�)rrDr�rLr�s     r$rzEditorWindow.update_menu_stater�r&c���|dkrVt|d��}t|�d��|z��|�d��z
}d}|df}|jj|g|�R�dS)zHandle scrollbar.�movetorrq�@0,0�scroll�unitsr[)�float�round�	getlinenorL�yview)rr]�args�fraction�liness     r$r�zEditorWindow.handle_yviews~���H����T�!�W�~�~�H��4�>�>�%�0�0�8�;�<�<��^�^�F�+�+�,�E��E��7�#�D���	���%��%�%�%�%��wr&c��|j}|�d|j�d|j����}	|�dd|��o|�|dd��}n#t
$rd}YnwxYw|s-|�ddd	��|�d
|��|js|�	��|j}||_
tjdd�dk}|r|�
d
���|jD]L}	|\}}	}
n#t$rY�wxYw|
��t!||
����}|�||����M|�|j|j��|r|j�
d���dS)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)s����y�����3���3�3�%�'�3�3�4�4��	!� �L�L��d�F�C�C�C��<�<���z�B�B�
�L���	!�	!�	!� �L�L�L�	!�����	,��O�O�E�5�%�0�0�0��M�M�(�F�+�+�+��z�	��O�O�����
����
���R�a�R� �E�)���	(��K�K�w�K�'�'�'��$�		5�		5�D�
�15�.��y�,�,���
�
�
���
�����#��/�G�D�,�/�/�1�1�E�� � ��e� �4�4�4�4�
���u�|�U�\�2�2�2��	-��I���G��,�,�,��ws#�.A�A,�+A,�D�
D�D)�CloserVNc���t|jd���}|jD]K}|d|d}}|�#|j|fd�}|�||����7|����L||_dS)Nrr�rac�0�|�|��dSr&��event_generate�rLr�s  r$rfz(EditorWindow.make_rmenu.<locals>.commandVs���'�'�	�2�2�2�2�2r&�r{rf)r�rLr��add_commandr�r�)rr�r�r{r�rfs      r$r�zEditorWindow.make_rmenuQs����T�Y��*�*�*���$�	&�	&�D�#�A�w��Q��9�E�� �!%��i�3�3�3�3��!�!��w�!�?�?�?�?��#�#�%�%�%�%���
�
�
r&c�*�|���Sr&)�rmenu_check_copy�rs r$�rmenu_check_cutzEditorWindow.rmenu_check_cut]s���$�$�&�&�&r&c�f�	|j�d��}|rdndS#t$rYdSwxYw)NrG�normalrt�rLr�r�)r�indxs  r$r�zEditorWindow.rmenu_check_copy`sO��	4��9�?�?�;�/�/�D� $�3�8�8��3���	�	�	��:�:�	���s�"�
0�0c�v�	|jj�d|jd��dS#t$rYdSwxYw)Nztk::GetSelection�	CLIPBOARDr�rt)rLr-�callr�r�s r$�rmenu_check_pastezEditorWindow.rmenu_check_pastehsQ��	��I�L���0�$�)�[�I�I�I��8���	�	�	��:�:�	���s�&*�
8�8c�8�tj|j��dS)zHandle Help 'About IDLE' event.r[)r�AboutDialogr�r's  r$r�zEditorWindow.about_dialogps��	��t�x�(�(�(��wr&c�:�tj|jd��dS)z&Handle Options 'Configure IDLE' event.�Settingsr[)r	�ConfigDialogr�r's  r$r�zEditorWindow.config_dialogvs��	�!�$�(�:�6�6�6��wr&c�Z�|jr|j}n|j}tj|��dS)zHandle Help 'IDLE Help' event.r[)r�r�r�
show_idlehelp)rr]�parents   r$r�zEditorWindow.help_dialog|s4���9�	��Y�F�F��X�F���6�"�"�"��wr&c��tjdd�dkr[	tj|j��nY#t
$r3}t
jdt|��|j	���Yd}~n!d}~wwxYwtj|j��dS)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�]�+�+�+�+���
8�
8�
8��$�+C���H�H�T�Y�8�8�8�8�8�8�8�8�8�����
8����
�O�D�M�*�*�*��ws�4�
A1�)A,�,A1c�:�|j�d��dS)Nz<<Cut>>r[�rLr�r's  r$r�zEditorWindow.cut�s���	� � ��+�+�+��wr&c�r�|j�d��sdS|j�d��dS)NrEz<<Copy>>r[)rL�
tag_rangesr�r's  r$r�zEditorWindow.copy�s:���y�#�#�E�*�*�	��4��	� � ��,�,�,��wr&c�n�|j�d��|j�d��dS)Nz	<<Paste>>rCr[)rLr�rVr's  r$r�zEditorWindow.paste�s1���	� � ��-�-�-��	�
�
�h�����wr&c��|j�ddd��|j�dd��|j�d��dS)NrErFzend-1crCr[)rLrUrTrVr's  r$r�zEditorWindow.select_all�sM���	���%���1�1�1��	���8�U�+�+�+��	�
�
�h�����wr&c�r�|j�ddd��|j�d��dS)NrErFrqrCr[)rLrSrVr's  r$r�zEditorWindow.remove_selection�s5���	���U�E�5�1�1�1��	�
�
�h�����wr&c�R�����|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+1czsel.last-1cc���|jdzdkr1	�d���d����dS#t$rYdSwxYwdS)NrMrrGrC)rLr�)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�sq�����a��A�%�%��#�O�K�0�0�0�&�&�x��Z�1H�I�I�I�I�I�������D�D�����	&�%s�0�
>�>)rLr�rT)rr�r�r�r�r�s ` @@@r$r�z&EditorWindow.move_at_edge_if_selection�sQ�������)�/��!�Y�/��5��	�	�	�	�	�	�	�	��r&c�:�|j�d��dS)Nz
<Meta-Delete>r[r�r's  r$r�zEditorWindow.del_word_left�s���	� � ��1�1�1��wr&c�:�|j�d��dS)Nz<Meta-d>r[r�r's  r$r�zEditorWindow.del_word_right�s���	� � ��,�,�,��wr&c�8�tj|j��dSrZ)r�findrLr's  r$r�zEditorWindow.find_event�s����D�I�����wr&c�8�tj|j��dSrZ)r�
find_againrLr's  r$r�zEditorWindow.find_again_event�s����$�)�$�$�$��wr&c�8�tj|j��dSrZ)r�find_selectionrLr's  r$r�z!EditorWindow.find_selection_event�s����d�i�(�(�(��wr&c�P�tj|j|j|j��dSrZ)r
rLr�r�r's  r$r�z EditorWindow.find_in_files_event�s!���	�$�)�T�W�d�j�1�1�1��wr&c�8�tj|j��dSrZ)rrLr's  r$r�zEditorWindow.replace_event�s�����	�"�"�"��wr&c��|j}tj|dd��j}|�Y|�ddd��|�d|�d���|�d��|���dS)	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�s����y�����l�)����		�
���O�O�E�5�%�0�0�0��M�M�(�v�M�M�M�2�2�2��H�H�X�����$�$�&�&�&��wr&c�F�	|j�dd�����}n#t$rd}YnwxYwt	j|jdd|��j}|�<|jr|j�|��n|j	�
|��|S)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.
        rGrJrBzOpen 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�=�=��j�9�9�?�?�A�A�D�D���	�	�	��D�D�D�	�����$��	�=�2��	���		�
� ��z�
,��
���	�*�*�*�*��� � ��+�+�+��s�-0�?�?c�.�|���dSrZ)rr's  r$r�zEditorWindow.open_module_events���������wr&c��|jj}|jjdkr|s|���}|�dSddlm}|�|j|��dS)N�PyShellEditorWindowr[r)�browser)	r�r�	__class__�__name__r�idlelibr�
ModuleBrowserr�)rr]rrs    r$r�z EditorWindow.open_module_browsersq���7�#����'�+@�@�@��A��'�'�)�)�H����w�#�#�#�#�#�#����d�i��2�2�2��wr&c�F�ddlm}|�|j��dS)Nr)�pathbrowserr[)r
r
�PathBrowserr�)rr]r
s   r$r�zEditorWindow.open_path_browsers/��'�'�'�'�'�'�����	�*�*�*��wr&c�Z�ddl}tjddg}|�|d���dS)Nrz-cz,from turtledemo.__main__ import main; main()F)�shellr[)�
subprocessr�
executable�Popen)rr]r�cmds    r$r�zEditorWindow.open_turtle_demos@�������~��=�?��	����E��*�*�*��wr&c���|�r|dkrn|j�dd|z��|j�ddd��|j�ddd��|���dSdSdS)NrrCz%d.0rErFrqz
insert +1l)rLrTrSrU�center)rr�s  r$�gotolinezEditorWindow.gotolines}����&�1�*�*��I���x��&��9�9�9��I� � ���u�5�5�5��I���e�X�|�<�<�<��K�K�M�M�M�M�M�	��*�*r&c�~�|rtj�|��rdStj�tj�|����\}}tj�|��tvrdS|j�dd��}|�	d��od|vS)NTrFz1.0 lineendz#!�python)
rxryr~�splitextr9�normcaserrLr��
startswith)rr�base�extrXs     r$r�zEditorWindow.ispythonsource&s����	�2�7�=�=��2�2�	��4��G�$�$�R�W�%5�%5�h�%?�%?�@�@�	��c�
�7���C� � �M�1�1��4��y�}�}�U�M�2�2�����t�$�$�9��T�)9�9r&c�Z�|jr#|j�|��d|_dSdSr&)r��unregister_maybe_terminater�s r$�
close_hookzEditorWindow.close_hook/s7���:�	��J�1�1�$�7�7�7��D�J�J�J�	�	r&c��||_dSr&)r!)rr!s  r$�set_close_hookzEditorWindow.set_close_hook4s
��$����r&c���|jr|j�|��|���|j�|��|���dSr&)r��filename_changed_editr�r��update_windowlist_registryr�r�s r$r�z!EditorWindow.filename_change_hook7sb���:�	3��J�,�,�T�2�2�2���� � � ���+�+�D�1�1�1��������r&c���|jrdS|�|jj��r|���|_|jr(|j�|j|j���dSdS)N)�filter�after)r�r�r�rr*r��insertfilterafterr�r�s r$�
_addcolorizerzEditorWindow._addcolorizer>s{���:�	��F����t�w�/�0�0�	/��,�,�.�.�D�J��:�	K��H�&�&�d�j��	�&�J�J�J�J�J�	K�	Kr&c��|jsdS|j���|j�|j��d|_dSr&)r��removecolorsr��removefilterr�s r$�_rmcolorizerzEditorWindow._rmcolorizerGsH���z�	��F��
���!�!�!�����d�j�)�)�)���
�
�
r&c��|���|���t�|j��|j�|j���|j�|j���dSdS)zUpdate the color themeN)	r/r+r(r+rLr��update_highlight_colorsr��
update_colorsr�s r$r�zEditorWindow.ResetColorizerNs���	
�������������!�!�$�)�,�,�,���(���5�5�7�7�7���(���+�+�-�-�-�-�-�)�(r&�_c�b�|�d|��|�|��}|r#||jvr|�d|dz|��d|�|��kr|�d|��n|�d|dz��|�|��dS)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�+�+��L�L��#��"4�c�:�:�:��4�8�8�C�=�=� � ��M�M�(�C�(�(�(�(��M�M�(�C�%�K�0�0�0�����
�
�
�
�
r&c�z�tjdddd���}|sd|jd<dStj|jd<dS)	z&Update the cursor blink configuration.rGr(zcursor-blinkrmrJrroN)rr�rLrn)r�cursorblinks  r$r�z EditorWindow.update_cursor_blinkhsW���(����V�E�E�E���	A�)*�D�I�o�&�&�&�*2�)@�D�I�o�&�&�&r&c��|j�|j���|j�|j���tj|jdd��}||jd<|���dS)z.Update the text widgets' font if it is changedNrGr(rk)r��update_fontr�rr�r�rLr�)r�new_fonts  r$�	ResetFontzEditorWindow.ResetFontrsz����(���)�)�+�+�+���(���)�)�+�+�+��#�D�I�v�~�F�F��$��	�&���������r&c�R�tj��x|j_}|���D]\}}|jj|g|�R��|���D]E}tj|��}|r-|���D]\}}|jj|g|�R���FdS)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�2M�2M�M��
�%��%�m�m�o�o�	4�	4�N�E�7�"�D�I�"�5�3�7�3�3�3�3�3�!�>�>�@�@�	<�	<�M��4�]�C�C�H��
<�&.�n�n�&6�&6�<�<�N�E�7�*�D�I�*�5�;�7�;�;�;�;�;��		<�	<r&c�V�tj��x|j_}|���|���D]-}tj|��}|r|�|���.i}|jjD]J}i||d<|dD]4}|r0|d||dt|d��d<�5�K|j	D]�}|j	|}|�
t��}|��,|dz
}td|��D]�}	|�
|	��dkru|�|	d��}
|
r]|�|	d��}d}||vr|||vr|||}|r't||��}
|�|	|
�������dS)	zeApply the virtual, configurable keybindings.

        Alse 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�2M�2M�M��
�%��������!�>�>�@�@�	.�	.�M��4�]�C�C�H��
.��#�#�H�-�-�-���
��M�*�	J�	J�D�%'�M�$�q�'�"��Q��
J�
J���J�BF�q�'�M�$�q�'�*�7�4��7�+;�+;�A�+>�?��
J� �=�	G�	G�K��=��-�D��*�*�S�/�/�C��{���1�H�C��q�#���
G�
G���9�9�U�#�#�y�0�0� �N�N�5�-�@�@�E��G�#'�>�>�%��#A�#A�� "��&�-�7�7�'�=��+E�E�E�(5�k�(B�8�(L�� �G�$3�G�U�$C�$C�E� �,�,�U��,�F�F�F��
G�	G�	Gr&c�R�|jstjdddd���|_dSdS)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�sA���|�	>�'�1�&�(�<�7<� >� >� >�D����	>�	>r&c��tj��}|jd}|�t��}||jkr|�|jdz|��|rQ|���|D]:}|�|d��}|�	|d|����;||jd<dS)z4Update the additional help entries on the Help menu.rrarr�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�9�9�	��=��(��"�.�.��-�-���T�6�6�6��O�O�T�6��:�_�M�M�M��	B��"�"�$�$�$�"�
B�
B���/�/��a��9�9���$�$�5��8�S�$�A�A�A�A� (��
�f���r&c���|f�fd�	}|S)z9Return a callback that loads resource (file or web page).c�x��|�d��stj�|��}tjdd�dkrX	tj|��dS#t$r4}tj	dt|���j���Yd}~dSd}~wwxYwtj
|��dS)N)�www�httpr@rAr�r�)rrxryr�rr|r�r�rr�rRrLr�r�)�helpfiler�rs  �r$�display_extra_helpz=EditorWindow._extra_help_callback.<locals>.display_extra_help�s�����&�&��7�7�
6��7�+�+�H�5�5���|�B�Q�B��5�(�(�<��L��*�*�*�*�*���<�<�<��(�/G� #�C�����<�<�<�<�<�<�<�<�<�<�����<�������)�)�)�)�)s�A%�%
B#�/)B�B#r\)r�resourcerds`  r$rZz!EditorWindow._extra_help_callback�s,���(0�
	*�
	*�
	*�
	*�
	*�
	*�"�!r&c���g}|j}|r]tj�|��r>t	|dd���5}|���}ddd��n#1swxYwY|rQtj�|��dz}||vr|�|��|�d|��g�|D]B}d|vs'tj�|dd���s��	|���C�fd	�|D��}d
}|dt|���}|r�	t	|ddd���5}|�|��ddd��n#1swxYwYnY#t$rL}t|jdd
��s,d|j_t!jdd|�d�|j���Yd}~nd}~wwxYw|jjD]�}	|	j}
|
�dt.��t1|��D]R\}}|���}|	�|��}
|
�||dz|z|
d����S��dS)z/Load and update the recent files list and menus�utf_8r)r.�errorsNr6r�rrc���g|]}|�v�|��	Sr\r\)�.0ry�	bad_pathss  �r$�
<listcomp>z9EditorWindow.update_recent_files_list.<locals>.<listcomp>�s#���E�E�E�D�t�9�/D�/D�4�/D�/D�/Dr&�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�rpr�showwarningrLr�r�r�r�r��	enumerate�rstrip�#_EditorWindow__recent_file_callbackr�)r�new_file�rf_listr�rf_list_filery�ulchars�rf_file�err�instancerD�i�	file_name�callbackrls              @r$r�z%EditorWindow.update_recent_files_list�sL������*�	��	3�����	�2�2�	3��i�&�y�:�:�:�
3�=I�&�0�0�2�2��
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��	(��w���x�0�0�4�7�H��7�"�"����x�(�(�(��N�N�1�h�'�'�'��	��	'�	'�D��t�|�|�2�7�>�>�$�q��t�*�#=�#=�|�� � ��&�&�&��E�E�E�E�G�E�E�E��)���!�C��L�L�.�)���	*�
*��)�S�#*�9�>�>�>�0�AH��&�&�w�/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0����
*�
*�
*��t�y�*?��G�G�*�48�D�I�1��*��!9�%(�!9�!9�!9� $�y�	*�*�*�*����������
*������.�	.�	.�H��-�D��K�K��3���� )�'� 2� 2�
.�
.���9�%�,�,�.�.�	�#�:�:�9�E�E��� � �w�q�z�C�'7�)�'C�)1�+,�!�.�.�.�.�
.�	.�	.sN�A�A#�&A#�.E/�E#�E/�#E'�'E/�*E'�+E/�/
G�9AG�Gc���|f�fd�	}|S)Nc�>���j�|���dS)N)�editFile)r�r�)�
fn_closurers �r$�open_recent_filez=EditorWindow.__recent_file_callback.<locals>.open_recent_files����G�L�L�*�L�-�-�-�-�-r&r\)rr�r�s`  r$�__recent_file_callbackz#EditorWindow.__recent_file_callbacks*���(1�	.�	.�	.�	.�	.�	.��r&c�*�|���}|���}|r&|r$tj��s|dz|ztz}n|r|}n|r|}nd}|p|p|}|���s
d|z}d|z}|j�|��|j�|��tj��rK|j�	d|��|j�	d|�����dSdS)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�"4�"4�		��E�M�D�(�;�6�E�E�
�	��E�E�
�	��E�E��E��%��%����~�~���	 ��U�N�E��4�<�D�����%� � � �����T�"�"�"�����	F��H�"�"�<��6�6�6�
�H�"�"�;�D�N�N�4D�4D�0D�E�E�E�E�E�	F�	Fr&c�4�|j���Sr&)r�r�r�s r$r�zEditorWindow.get_saved/s���y�"�"�$�$�$r&c�:�|j�|��dSr&)r��	set_saved)r�flags  r$r�zEditorWindow.set_saved2s���	���D�!�!�!�!�!r&c�8�|j���dSr&)r��
reset_undor�s r$r�zEditorWindow.reset_undo5s���	�������r&c�`�|jj}|rtj�|��ndS)Nr�)r�rrxryr9)rrs  r$r�zEditorWindow.short_title8s,���7�#��-5�E�r�w����)�)�)�:�Er&c��|jjpdS)NrB)r�rr�s r$r�zEditorWindow.long_title<s���w��%�2�%r&c�.�|���dSrZ)rr's  r$r�z EditorWindow.center_insert_event?s�����
�
�
��wr&rCc���|j}|���\}}|�|��}||z
}td||dzz
��}|�t|����dS)NrarC)rL�getwindowlinesr��maxr�r�)r�markrLr��botr�rP�newtops        r$rzEditorWindow.centerCsn���y���&�&�(�(���S�����%�%���s����Q�����*�+�+���
�
�5��=�=�!�!�!�!�!r&c���|j}|�d��}|�d��}||kr5|���dkrt|d��}||zdz
}||fS)Nr�z@0,65535rarP)rLr��winfo_heightrI)rrLr�r�rPs     r$r�zEditorWindow.getwindowlinesKsr���y���n�n�V�$�$���n�n�Z�(�(���#�:�:�$�+�+�-�-��2�2���h��(�(�F���,��"�C��C�x�r&c�n�|j}tt|�|������Sr&)rLrIr�r�)rr�rLs   r$r�zEditorWindow.getlinenoUs+���y���5����D�)�)�*�*�+�+�+r&c���|j���}tjd|��}t	tt|�������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_geometryYsG���x�#�#�%�%���H�5�t�<�<���C��Q�X�X�Z�Z�(�(�)�)�)r&c�.�|���dSrZ)r�r's  r$r�zEditorWindow.close_event_s���
�
�����wr&c�>�|jr�|���sh|j���dkr|j���|j���|j���|j���SdS)Nr�)r�r�r�rL�	deiconify�lower�lift�	maybesaver�s r$r�zEditorWindow.maybesavecs����7�	'��>�>�#�#�
 ��8�>�>�#�#�X�-�-��H�&�&�(�(�(����� � � ���
�
�����7�$�$�&�&�&�
	'�	'r&c��	|���}t|��dkr|���|S#t$rYdSwxYw)N�cancel)r�rR�_close�AttributeError)r�replys  r$r�zEditorWindow.closels[��	��N�N�$�$�E��5�z�z�X�%�%����
�
�
��L���	�	�	��D�D�	���s�<?�
A
�A
c��|jjr |�|jj���tj|j��|���|j���d|_d|_|j	r |j	���d|_	d|_
d|_|j���d|_|j
���|jr|���dSdS)N)rz)r�rr�r�unregister_callbackr��unload_extensionsr�r�r�rLr�r�r��destroyr!r�s r$r�zEditorWindow._closeus����7��	E��)�)�4�7�3C�)�D�D�D��"�4�#7�8�8�8���� � � ���
�
���������	��:�	��J�������D�J���	� ���������������������?�	��O�O������	�	r&c�<�i|_|���dSr&)�
extensions�load_standard_extensionsr�s r$r�zEditorWindow.load_extensions�s!������%�%�'�'�'�'�'r&c��t|j�����D]&}t|d��r|����'i|_dS)Nr�)r�r��valuesr�r�)r�inss  r$r�zEditorWindow.unload_extensions�sR�����.�.�0�0�1�1�	�	�C��s�G�$�$�
��	�	���������r&c���|���D]O}	|�|���#tdt|����t	j��Y�MxYwdS)NzFailed to load extension)rF�load_extension�print�repr�	traceback�	print_exc)rrFs  r$r�z%EditorWindow.load_standard_extensions�sx���5�5�7�7�	&�	&�D�
&��#�#�D�)�)�)�)��
&��0�$�t�*�*�=�=�=��#�%�%�%�%�%����	&�	&s	�.�2A"c�,�tjd���S)NT)�editor_only)r�
GetExtensionsr�s r$rFz)EditorWindow.get_standard_extension_names�s���%�$�7�7�7�7r&�ZzDummy�zzdummyc�X�|j�||��}		tjd|zt���}n+#t
tf$rtj|��}YnwxYwn#t
$rtd|���wxYwt||��}tj
|��}t|d��r|�|j
|��||��}||j|<|r�|�|��|D]�}|�dd��}|dd�dkr|dd�}|dd�dk�|d	d�d
kr|dd	�}|d	d�d
k�|dz}t||��r)|j�|t||������dSdS)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�s���
�!�!�$��-�-��	�
5��-�c�E�k�;�O�O�O������+�
5�
5�
5��-�e�4�4����
5�������	�	�	��2�D�9�9�9��	�����c�4� � ���/��5�5���3�
�#�#�	3��O�O�C�L�'�2�2�2��c�$�i�i�� #������
	E�����(�(�(�!�
E�
E��#�^�^�C��5�5�
� ��!��n��+�+�!+�A�B�B��J�!��!��n��+�+� ����o��,�,�!+�C�R�C��J�!����o��,�,�'�(�2�
��3�
�+�+�E��I�N�N�6�7�3�
�+C�+C�D�D�D��
	E�
	E�
E�
Es&�=�A)�%A%�"A)�$A%�%A)�)Bc��|�|jj}|j}||_|���D]\}}|r|j|g|�R��dS)z"Add events with keys to self.text.N)r/rCrLrHrDr�)rrHrLr]rIs     r$r�zEditorWindow.apply_bindings�sg���?��m�3�G��y�����%�m�m�o�o�	0�	0�N�E�7��
0����u�/�w�/�/�/�/��	0�	0r&c	��|�|jj}|�|jj}|j}|j}|D]�\}}|�|��}|s�|D]�}|�|����|\}	}
|	dd�dk}|r
|	dd�}	t|	��\}}	t||
��}
||
fd�}|r6|�	|
t��}|�|	|||
|�����|�|	|||
�������dS)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�0�|�|��dSr&r�r�s  r$rfz(EditorWindow.fill_menus.<locals>.command�s���+�+�I�6�6�6�6�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�3�G��=���y�� (�	B�	B��E�9��<�<��&�&�D��
��"�
B�
B���=��&�&�(�(�(�(�',�$�E�9�#(��!��9��#3�K�"�*� %�a�b�b�	��'.�u�~�~�$�I�u�"1�'�9�"E�"E�K�%)�Y�7�7�7�7�"�B�"�.�.�y�*�E�E���,�,�5�I�$+��%(�-�*�*�*�*��(�(�u�	�18�5@�)�B�B�B�B�%
B�		B�	Br&c�z�|�|��}|r|���}|St|���r&)r�r��	NameError)rrFr��values    r$�getvarzEditorWindow.getvar�s;�����t�$�$���	"��G�G�I�I�E��L��D�/�/�!r&c�~�|�||��}|r|�|��dSt|���r&)r�r�r�)rrFr��vartyper�s     r$�setvarzEditorWindow.setvar�s>�����t�W�-�-���	"��G�G�E�N�N�N�N�N��D�/�/�!r&c�v�|j�|��}|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�sN����#�#�I�.�.���	D�w�	D�18����1C�1C�C�D��i�(�3��
r&c��|jr7|j�d|��pd|j�|��vSdS)N�TODO�STRINGra)r�rL�
tag_prevrange�	tag_names)r�
text_indexs  r$�is_char_in_stringzEditorWindow.is_char_in_stringsL���:�	��9�*�*�6�:�>�>�?��t�y�2�2�:�>�>�>�
?��1r&c��	|j�d��}|j�d��}||fS#t$rYdSwxYw)NrGrJ�NNr�)rr[r\s   r$�get_selection_indicesz"EditorWindow.get_selection_indicessY��	��I�O�O�K�0�0�E��9�?�?�:�.�.�D��$�;����	�	�	��:�:�	���s�7:�
A�Ac�H�|jdpt}t|��S)N�tabs)rL�TK_TABWIDTH_DEFAULTrI)r�currents  r$�get_tk_tabwidthzEditorWindow.get_tk_tabwidth&s ���)�F�#�:�':���7�|�|�r&c	���|j}|���|krE|j�dd|dd|jd|z��}|�|���dSdS)Nrkr1z
-displayof�n)r)rLrr-r��master�	configure)r�newtabwidthrL�pixelss    r$�set_tk_tabwidthzEditorWindow.set_tk_tabwidth,sr���y�����!�!�[�0�0��W�\�\�&�)�T�&�\�".���"%��"3�5�5�F�
�N�N��N�'�'�'�'�'�1�0r&c���|rD|rB|���}d|cxkrdkr
nn||_|j|jkrd|_|�|j��dS)NrCrF)�guess_indentr�r�r�r
)rr �guessr�s    r$r�z#EditorWindow.set_indentation_params7sv���	%��	%��!�!�#�#�A��A�{�{�{�{��{�{�{�{�{�#$�� ���4�=�0�0�$������T�]�+�+�+�+�+r&c��|j}|���\}}|r0|r.|�||��|�d|��dS|�dd��}|dkrC|�ddd��r|�d��n|���dS|dd	vr|�d��dS|j}t|�	|����}|d
ksJ�|dz
|j
z|j
z}d
}		|dd�}|	dz}	t|�	|����}||ks
|dd	vrn�C|���|�d
|	zd��||kr"|�dd||z
z|j
��|���dS)NrCr[r?rBrKrFz	insert-1crr� 	rraTz
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���0�0�2�2���t��	�T�	��K�K��t�$�$�$��M�M�(�E�*�*�*��7����+�X�6�6���B�;�;��|�|�H�c�5�1�1�
����K�(�(�(�(��	�	�����7��"�I�U�"�"��K�K��$�$�$��7��=���5�#�#�H�-�-�.�.���a�x�x�x�x����d�.�.�$�2B�B���
�	��#�2�#�J�E�)�A�-�M��u�'�'��1�1�2�2�D��t�|�|�u�R�y��5�5��	�	
���������L�=�0�(�;�;�;��$�;�;��K�K��#����"5��3�
5�
5�
5��������wr&c�j�|j}|���\}}|���	|r||rzt|��t|��kr.|j�|��|���S|�||��|�d|��|�	dd��}t||j��\}}|t|��kr|�
||jz��n_|jrd}n9t|�|j����}|j}	d|	||	zz
z}|�d||j��|�d��	|���dS#|���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_eventks����y���0�0�2�2���t�������	#��
/��
/��e�$�$�
�4�(8�(8�8�8��<�;�;�E�B�B�(
� � �"�"�"�"�'���E�4�(�(�(��
�
�h��.�.�.��X�X�0�(�;�;�F�,�V�T�]�C�C�N�C���c�&�k�k�!�!�� � ��T�-=�!=�>�>�>�>��<�4��C�C� #�F�$5�$5�d�m�$D�$D� E� E�I��(�A���Y��]�!2�3�C����H�c�4�+F�G�G�G��H�H�X������ � �"�"�"�"�"��D� � �"�"�"�"���s�=F�C?F�F2c�4
�|j}|���\}}|���	|r.|r,|�||��|�d|��|�dd��}dt
|��}}||kr||dvr|dz
}||kr
||dv�||krH|�dd|j��	|�	d��|�
��dS|d|�}d}|r%|d	dvr|dd	�}|dz
}|r
|d	dv�|r|�d
|zd��|�d��dvr,|�d��|�d��dv�,|�dd|j��t|�d����}	tj|j|j��}
|js�|jD]�}t'|	|z
d��}t)|��dz}
|�|
d��}|
�|��|
�|�|
����}|�|dkrn��|
�|pd��nc|�dd��}|r	|d}
nd
}
|�|
d��}|
�|��|
�d��|
���}|tjk�r|tjkrn�|tjkr|�d||j��n�|tjkr(|�|
� ����nz|tj!kr]|
�"��dkr|�d||j��n5|�|
�#����n
Jd|�����	|�	d��|�
��dS|
�$��}|�d||j��|
�%��r|�&|��n+|r)|
�'��r|�(|��	|�	d��|�
��dS#|�	d��|�
��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?rrrar6r[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���0�0�2�2���t�������e	#��
/��
/����E�4�(�(�(��
�
�h��.�.�.��8�8�.��9�9�D��c�$�i�i�q�A��a�%�%�D��G�u�,�,��Q����a�%�%�D��G�u�,�,��A�v�v����.�� �7�9�9�9��j
�H�H�X����� � �"�"�"�"�"�k�"�1�"�X�F��A��
�4��8�u�,�,��C�R�C�y���Q����
�4��8�u�,�,��
?����/�!�3�X�>�>�>��(�(�8�$�$��-�-����H�%�%�%��(�(�8�$�$��-�-�
�K�K��$��(C�D�D�D��T�Z�Z��1�1�2�2�C���t�/���?�?�A��(�
�#�5���G�!�#��-��3�3�G�#'��=�=�4�#7�L�"�h�h�|�X�>�>�G��J�J�w�'�'�'��1�1� �;�;�L�I�I�K�K�C���'�Q�,�,���+7�������"�"�"�"��&�&�y�(�;�;���)�#$�Q�4�L�L�#(�L��(�(�<��:�:���
�
�7�#�#�#���������'�'�)�)�A��G�N�"�"���3�3�3���'�5�5�5��K�K��&�$�2M�N�N�N�N��'�+�+�+�
�$�$�Q�%=�%=�%?�%?�@�@�@�@��'�-�-�-��.�.�0�0�1�4�4����H�f�$(�$?�A�A�A�A��(�(��)C�)C�)E�)E�F�F�F�F�>�>��>�>�>�>�1��
�H�H�X����� � �"�"�"�"�"��-�-�/�/�F��K�K��&�$�*E�F�F�F�� � �"�"�
2��'�'��.�.�.�.��
2�A�-�-�/�/�
2��*�*�5�1�1�1���H�H�X����� � �"�"�"�"�"��
�H�H�X����� � �"�"�"�"���s�BS,�>LS,�;BS,�,+Tc��||jfd�}|S)Nc�$�||d|zz��S)Nz+%dcr\)�offset�_startindex�_iciss   r$�innerz6EditorWindow._build_char_in_string_func.<locals>.inners���5��v���6�7�7�7r&)r�)r�
startindexr>s   r$r#z'EditorWindow._build_char_in_string_funcs&��&0��.�	8�	8�	8�	8��r&c�`�|jr#t||j��\}}d|zd|zzSd|zS)NrBrA)r��divmodr�)rr�ntabs�nspacess    r$�_make_blankszEditorWindow._make_blankss=���<�	�#�A�t�}�5�5�N�E�7��%�<�#��-�/�/���7�Nr&c� �|j}|���|�ddd��r|�dd��|r/|�d|�|��|j��|���dS)Nr?z!=rC)rLr�rNr�rCrDr�r�)rrhrLs   r$rzEditorWindow.reindent_to s����y���������<�<�*�D�(�;�;�	6��K�K�*�H�5�5�5��	5��K�K��$�"3�"3�F�";�";��3�
5�
5�
5��������r&c���t|j�����\}}|r3|r1t||j��\}}t||j��\}}ndx}}||z
S�Nr)�IndentSearcherrLrrrr�)r�opener�indentedr�indentsmall�indentlarges      r$rzEditorWindow.guess_indent/st��)�$�)�4�4�8�8�:�:�����	*�h�	*�.�v�t�}�E�E��C��.�x���G�G��C���()�)�K�+��[�(�(r&c���|j�dS|jjr|j���d}n|j���d}|�dd|�d����dS)N�Show�Hidersruz
 Line Numbers)rDr�r{)r��is_shown�hide_sidebar�show_sidebarr�)rr]�
menu_labels   r$rz&EditorWindow.toggle_line_numbers_event8s�����$��F���%�	 ���*�*�,�,�,��J�J���*�*�,�,�,��J����I�]�(2�%A�%A�%A�	�	C�	C�	C�	C�	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�ryr�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�rr
r�r�r�r�r#rDrrrr\r&r$r(r(3s�������-�-�-�-�-�-�>�>�>�>�>�>�>�>�*�*�*�*�*�*�2�2�2�2�2�2�2�2� � � � � � �0�0�0�0�0�0�1�1�1�1�1�1�-�-�-�-�-�-�'�'�'�'�'�'�/�/�/�/�/�/�+�+�+�+�+�+�M�M�M�M�M�M�M�M�M�M�M�M�-�-�-�-�-�-�-�-�-�-�-�-�2��2�4�4���H�����!��aI�aI�aI�aI�F	����4�4�4����
)�)�)�V7�7�7� ;�;�;�;��&���J�#'�#'�#'�J)�)�)�1�1�1�
1�1�1�
	�	�	�
�E�!�!�!�J	,��K�

�
�
�'�'�'�4�4�4����������������	�	�	�	����������
��������
���(���������������������������0���	�	�	�	�����
�������:�:�:����
%�%�%����K�K�K����.�.�.��%��
�5��;�J�	�	�	�A�A�A����"
<�
<�
<�&G�&G�&G�P>�>�>�)�)�)�"
"�
"�
"�,.�,.�,.�,.�\ � � �
F�F�F�6%�%�%�"�"�"����F�F�F�&�&�&����"�"�"�"����,�,�,�,�*�*�*����'�'�'�������((�(�(����&�&�&�8�8�8�	�9�
�H�E�E�E�80�0�0�0�$B�$B�$B�$B�L"�"�"�"�"�"�"�����$���������(�(�(�,�,�,�,�)�)�)�V!#�!#�!#�Fq#�q#�q#�p��� ������)�)�)�C�C�C�C�C�Cr&r(c�:�tt|����Sr&)rIr�)r�s r$rrFs���u�U�|�|���r&z[ \t]*c���t�|��}|���t|����|����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$rrKsH��	���d�#�#�A��5�5�7�7�C����	�	�,�,�X�6�6�7�7�7�7r&c�F�eZdZdZd�Zd�Zejejdfd�Z	d�Z
dS)rHz4Manage initial indent guess, returned by run method.c�L�||_dx|_|_dx|_|_dSrG)rLr��finished�blkopenline�indentedline)rrLs  r$r$zIndentSearcher.__init__Xs-����	�!"�"�����/3�3���4�,�,�,r&c���|jrdS|jdzx}|_t|��dz}|j�|dd��rdS|j�||dz��S)NrBrar�z>=rqz lineend+1c)rnr�r�rLrNr�)rr�r�s   r$�readlinezIndentSearcher.readline]sn���=�	��2��V�a�Z���D�F��A�w�w��~���9���T�4��/�/�	��2��y�}�}�T�4�-�#7�8�8�8r&)�class�def�for�ifr��try�while�withc	�|�|jrdS||kr
||vr	||_dS||kr|jr||_d|_dSdSdS)Nra)rnrorp)	rrK�token�startrqrX�INDENT�NAME�OPENERSs	         r$�
tokeneaterzIndentSearcher.tokeneaterfsb��
�=�	��D�
�T�\�\�e�w�.�.�#�D����
�V�^�^�� 0�^� $�D���D�M�M�M��^�^�^r&c��	tj|j��}|D]}|j|��
n#tjt
f$rYnwxYw|j|jfS)ztReturn 2 lines containing block opener and and indent.

        Either the indent line or both may be None.
        )�tokenize�generate_tokensrrr��
TokenError�SyntaxErrorrorp)r�tokensr{s   r$rrzIndentSearcher.runssz��
	��-�d�m�<�<�F��
(�
(������'�'�'�
(���#�[�1�	�	�	��D�	�������!2�2�2s�(+�A�AN)r	rTrU�__doc__r$rrr�r}r~r�rrr\r&r$rHrHUsl������:�:�4�4�4�
9�9�9�#�/� �
�-�����3�3�3�3�3r&rHc�p�|�d��}|dkr|d|�||dzd�z}||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��sB��	
���s���A��A�v�v�
�b�q�b�E�A�a��c�d�d�G�O���a�4�Kr&�[�]�/)�bracketleft�bracketright�slashc��|�|��}|rtj��r|dvrdS|d}tjdd�|��}tjdd�|��}tjdd|��}tjd	d
|��}tjdd|��}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�N�|������Sr&)rk�upper�r�s r$r^z!get_accelerator.<locals>.<lambda>�s��a�g�g�i�i�o�o�&7�&7�r&z\b\w+\bc��t�|���|�����Sr&)�keynamesr�rkr�s r$r^z!get_accelerator.<locals>.<lambda>�s$��X�\�\�!�'�'�)�)�Q�W�W�Y�Y�%G�%G�r&zKey-�Cancelz
Ctrl-BreakzControl-zCtrl-r��+z><rArIrK)r�r
r�r��sub)rHr�rIr�s    r$rQrQ�s���k�k�)�$�$�G�
���)�+�+��	�>6�16�16��r���
�A�
��{�7�7��;�;�A�
��z�G�G��K�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}|�ddd��|�ddd��|�ddd��dS)	N�tcl_wordBreakAfterza brr��
tcl_wordcharsz\w�tcl_nonwordcharsz\W)r-r�)r�r-s  r$�
fixwordbreaksr��sU��
��B��G�G� �%��+�+�+��G�G�E�?�E�*�*�*��G�G�E�%�u�-�-�-�-�-r&c�Z�|}t|��tjdd�rtjd}nd}tj|d��t||���}|j}d|d<td��D].}|�dd|zt|��zdz���/dS)	Nra)r�r�
rP�rCz  r6)
r�r�argvr
�setupAppr(rLrPrCrR)r�r�rrnrLr�s      r$�_editor_windowr��s����D��$����
�x����|���8�A�;�����
�O�D�$�����T�H�5�5�5�D��9�D��D��N�
�2�Y�Y�6�6�����H�d�1�f�s�1�v�v�o��4�5�5�5�5�6�6r&�__main__)rGzidlelib.idle_test.test_editorrCF)�	verbosity�exit)rr):�
importlib.abcr��importlib.utilrxr|r�rerr�r�r��tkinter�tkinter.fontr�tkinter.ttkrrr�idlelib.configrr
r	r
rrr
�idlelib.multicallrrrrr�idlelib.treer�idlelib.utilrrr�python_versionr�rr%r(r�compilerjrrHr�r�rQr�r�r	�unittestrG�idlelib.idle_test.htestrrr\r&r$�<module>r�sB����������	�	�	�	�����	�	�	�	�
�
�
�
�
�
�
�
�����������������������!�!�!�!�!�!� � � � � � �������#�#�#�#�#�#� � � � � � �������������������������.�.�.�.�.�.�������������������������$�$�$�$�$�$�&�&�&�&�&�&����������/��/�1�1�1��	���	!��
�
�
�PC�PC�PC�PC�PC�PC�PC�PC�f0����"�*�Y�'�'��8�8�8�*3�*3�*3�*3�*3�*3�*3�*3�^���$��

����(
�(
�(
�V.�.�.�
6�
6�
6�&�z����������D�	(�A�E�B�B�B�B�+�+�+�+�+�+��C��������r&
© 2025 GrazzMean