Your IP : 216.73.217.32


Current Path : /opt/alt/python39/lib64/python3.9/idlelib/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/idlelib/__pycache__/editor.cpython-39.opt-2.pyc

a

XC?h��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlTddlm
Z
ddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddlm$Z$dZ%de�&�Z'ejdkZ(dd�Z)Gdd�d�Z*dd�Z+e�,d�Z-dd �Z.Gd!d"�d"�Z/d#d$�Z0d%d&d'd(�Z1d)d*�Z2d+d,�Z3d-d.�Z4e5d/k�r�dd0l6m7Z7e7d1d2d3d4�dd5l8m9Z9e9e4�dS)6�N)�*)�Font)�	Scrollbar)�simpledialog)�
messagebox)�idleConf)�configdialog)�grep)�help)�
help_about)�macosx)�MultiCallCreator)�pyparse)�query)�replace)�search)�wheel_event)�
py_extensions)�window�z (%s)�darwincCsbtj\}}}}}d||f}|d|f7}|dkrB|d|f7}n|dkr^|d|d|f7}|S)Nz%s%sz%s�	candidatezrc%s�finalr)�sys�version_info)�major�minor�micro�level�serial�release�r!�3/opt/alt/python39/lib64/python3.9/idlelib/editor.py�_sphinx_version&sr#c@s<eZdZddlmZddlmZmZddlm	Z	ddl
mZmZddl
mZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZmZmZmZddl m!Z!ddl"m#Z#ddl$m%Z%e&�'�Z(dZ)dZ*dZ+d�dd�Z,d�dd�Z-dd�Z.dd�Z/dd�Z0dd�Z1d�dd �Z2gd!�Z3d"d#�Z4d$d%�Z5d&d'�Z6d(d)�Z7d*d+�Z8dZ9d,d-�Z:d.gZ;d/d0�Z<d1d2�Z=d3d4�Z>d5d6�Z?d�d7d8�Z@d�d9d:�ZAd�d;d<�ZBd�d=d>�ZCd?d@�ZDdAdB�ZEdCdD�ZFd�dEdF�ZGd�dGdH�ZHdIdJ�ZIdKdL�ZJdMdN�ZKdOdP�ZLdQdR�ZMdSdT�ZNdUdV�ZOdWdX�ZPdYdZ�ZQd[d\�ZRd]d^�ZSd�d_d`�ZTd�dadb�ZUd�dcdd�ZVdedf�ZWdgdh�ZXdidj�ZYdkdl�ZZdmdn�Z[dodp�Z\dqdr�Z]dsdt�Z^e_j`e_jaduZbdvdw�Zcdxdy�Zddzd{�Zed|d}�Zfd~d�Zgd�d��Zhd�d��Zid�d��Zjd�d�d��Zkd�d��Zld�d��Zmd�d��Znd�d��Zod�d��Zpd�d��Zqd�d��Zrd�d��Zsd�d�d��Ztd�d��Zud�d�d��Zvd�d��Zwd�d��Zxd�d��Zyd�d��Zzd�d��Z{d�d��Z|d�d��Z}d�d��Z~d�d��Zd�d�iZ�d�d��Z�d�d�d��Z�d�d�d��Z�d�d��Z�d�d�d��Z�d�d�d��Z�d�d��Z�d�d„Z�d�dĄZ�d�dƄZ�d�d�dȄZ�d�dʄZ�d�d̄Z�d�d΄Z�d�dЄZ�d�d҄Z�d�dԄZ�d�dքZ�d�d�d؄Z�dS)��EditorWindowr)�
Percolator)�ColorDelegator�color_config)�
UndoDelegator)�	IOBinding�encoding)�mainmenu)�MultiStatusBar)�AutoComplete)�
AutoExpand)�Calltip)�CodeContext)�LineNumbers)�FormatParagraph�FormatRegion�Indents�Rstrip)�
ParenMatch)�Squeezer)�
ZoomHeightNTcCsL	ddlm}tjdu�rtj�tjdd�}tj	�
d�rvddtjdd�}tj�d	�r^d
}q�d}tj�||dd�}nVtj	dd�dkr�tj�tjdd
t
��}	tj�|	�r�|	}ntj	dkr�tj�tjd�}tj�|�}tj�|��r|t_tj	dk�rdtjt_ndtjdd�t_||_|�p*|j}||_t|�|_tj||jd�|_}
|�rl|j|_|j|j_ni|_i|j_tj�o�tj�tjd�|_d|_t|
�|_ }t!|dd�|_"}tj#ddddd�}
dddd|
d tj#ddd!dd�d"�}t$t%�|fi|��|_&}|j&|j_'|�(�|�)�|j�*d#|j+�|j�,d$|j-�t.�/��rx|�,d$|j-�|�,d%|j0�|�,d&|j0�n|�,d'|j0�|�,d(t1�|�,d)t1�|�,d*t1�|�,d+|j2�|�,d,|j3�|�,d-|j4�|�,d.|j5�|�,d/|j6�|�,d0|j7�|�,d1|j8�|�,d2|j9�|�,d3|j:�|�,d4|j;�|�,d5d6d7��|�,d8|j<�|�,d9|j=�|�,d:|j>�|�,d;|j?�|�,d<|j@�|�,d=|jA�|�,d>|jB�|�,d?|jC�|�,d@|jD�|�,dA|jE�|�,dB|jF�|�G|�|_H}|�,dC|jI�|�,dD|jJ�|�,dE|jK�|�,dF|jL�|�,dG|jM�|�,dH|jN�|�O|�}|�,dI|jP�|�,dJ|jQ�|�,dK|�Rd��|�,dL|�RdM��|�,dN|jS�|�,dO|jT�|�,dP|jU�|�r ||j|<|�r�||jV|<|�,dQ|jW�|�,dR|jjX�|�,dS|jY�|�,dT|jZ�|�,dU|j[�|�\�|j]t^t_dMdV�|j`dMdMdW�|jadMdMdW�|jb|dX<|jcdMdtddY�|je|dZ<t�f|jdd�|d[<|jcdMdMtddY�|�g�|�h�tj#dd\d]d^d�}||_id_|_j|jj|_k|�l�tmtd`��s�|j&dat_n|�o�db|_p|�q|�|_r}|�s�|_t}|�u|�|jv|_v|jw|_w|�x|jy�|�z|�|_{}|�||j}�dc|_~|�dc�d|_�d|_�d|_�|�r�tj��|��r�tj�|��s�|��|��r�dd|_~|��|�}|�|�n|��|�dd|_~|���|�y�|���|���|j���de�}|�rT|��df�}|du�r(dg}|dk�rB|���|dM}||_�t��|j��t�j�|_�t�j�|_�t�j�|_�|��dhdi�|��djdkdldm�|��dndo�|��dpdq�|��drdqdsdt�|��|�}|�,dh|j��|�,dj|j��|�,du|j��|�,dv|��|�j��|�,dw|��|�j��|��|�}|�,dx|j��|�,dr|j��||�}|�,dy|j��|�,dz|j��|�,d{|j��|�,d||��|�j��|��|�|_�}|�,dn|j��|�,dp|j��|�,d}|j��|�,d~|��|�j��|j��r�|��|�|_�|�,d|j�j��n|��d�d�d��|j��	r:|��|�|_�tj#ddd�d^d��	r*|���|�,d�|j��n|��d�d�d��dS)�Nr)�
ScriptBindingZDocz
index.htmlZlinuxzpython-docs-z%s.%s.%s�z/var/www/html/python/z/var/www/html/python/index.htmlz/usr/share/doc/�winzPython%s.chmrz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/�)�menuzrecent-files.lst��vbar)�name�mainr$�width�int��type�text�ZnoneZ
wordprocessor�height)r@�padxZwrapZhighlightthicknessrBZtabstylerHZWM_DELETE_WINDOW�<<close-window>>z<Control-Button-1>z<2>z<3>z<MouseWheel>z
<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>>cSsdS�N�breakr!��eventr!r!r"�<lambda>��z'EditorWindow.__init__.<locals>.<lambda>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)Zweight�command)�row�columnZstickyZyscrollcommand�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)�Zidlelib.runscriptr9r$�help_url�os�path�joinr�base_prefix�platform�countr�isdirr#�isfile�normpath�flist�root�Menu�menubarrZListedToplevel�top�vars�tkinter_varsZinversedict�
instance_dictrZuserdir�recent_files_path�prompt_last_line�Frame�
text_framerr?�	GetOptionr
�TextrFZfocused_widget�
createmenubar�apply_bindingsZprotocol�close�bind�close_eventrZisAquaTk�right_menu_eventr�handle_winconfig�cut�copy�paste�center_insert_event�help_dialog�python_docs�about_dialog�
config_dialog�open_module_event�
select_all�remove_selection�
find_event�find_again_event�find_in_files_event�find_selection_event�
replace_event�goto_line_event�smart_backspace_event�newline_and_indent_event�smart_indent_eventr3�fregion�indent_region_eventZdedent_region_eventZcomment_region_eventZuncomment_region_eventZtabify_region_eventZuntabify_region_eventr4Ztoggle_tabs_eventZchange_indentwidth_event�move_at_edge_if_selection�
del_word_left�del_word_right�
home_callback�dict�new_callbackZclose_all_callback�open_module_browser�open_path_browser�open_turtle_demo�set_status_bar�packZLEFTZBOTHZrowconfigureZcolumnconfigure�handle_yviewZgridZNSEW�set�GetFontZ	focus_set�	set_width�usetabs�tabwidth�indentwidth�set_notabs_indentwidth�hasattrr^�update_cursor_blink�num_context_linesr%�perr(�undo�insertfilter�undo_block_start�undo_block_stopZset_saved_change_hook�saved_change_hookr)�ioZset_filename_change_hook�filename_change_hookZ	good_load�set_indentation_params�color�code_context�line_numbers�exists�loadfile�ispythonsourceZset_filename�ResetColorizer�update_recent_files_list�load_extensions�menudict�get�index�
add_separator�	wmenu_endZregister_callback�postwindowsmenurZ
askintegerrZaskyesno�	showerror�	event_addr-Zautocomplete_eventZtry_open_completions_eventZforce_open_completions_eventr.Zexpand_word_eventr2Zformat_paragraph_eventr6Zflash_paren_eventZparen_closed_eventZcheck_module_eventZrun_module_eventZrun_custom_eventr5Z	do_rstripr/�ctipZtry_open_calltip_eventZrefresh_calltip_eventZforce_open_calltip_eventr8Zzoom_height_event�allow_code_contextr0Ztoggle_code_context_event�update_menu_state�allow_line_numbersr1�toggle_line_numbers_event)�selfrp�filename�keyrqr9ZdochomeZpyverZbasepathZchmfilertr{r?rBZtext_optionsrFr��indentsZ	usespacesr�r�r��	is_py_srcr=raZautocompleteZ
parenmatchZ
scriptbindingr�r!r!r"�__init__Is�
��

��
���







�






��
��
�
��zEditorWindow.__init__cCs|��dS�N)r��r�rOr!r!r"r�aszEditorWindow.handle_winconfigcCs^|j}tt|jj|�d�|�d�g��}|��d|}t||�d�d��d�}|||_	dS)NZborderrIr<r[)r[�0)
rF�sum�map�tkZgetintZcgetZwinfo_widthr�measurerB)r�rFZ
inner_paddingZpixel_widthZzero_char_widthr!r!r"r�ds��zEditorWindow.set_widthcCs|j��\}}|j�|�dSrL)r�Zdefaultfilenamerp�new)r�rO�dirname�basenamer!r!r"r�qszEditorWindow.new_callbackcCs�|jd@dkr|jdkrdS|j�d�rd|j�ddd�rd|j�ddd�rdt|j�d��d�d	�}n8|j�dd�}tt	|��D]}||d
vr~q�q~t	|�}t|j�d��d�d	�}||kr�d}dt
|�d
}|jd	@dkr�|j�ddd�n�|j�d��s|j�dd�n@|j�|j�d�d|j�d���rB|j�dd�n|j�dd�|j�|�}|j�d�}|j�|d|��r�||}}|j�ddd�|j�
d||�|j�d|�|j�d�dS)N�rZHomeZiomark�<=zinsert lineend�insert linestart�.rT)� �	�insertzinsert linestart+�c�sel�1.0ra�	sel.firstZ	my_anchor�<�sel.last�>rM)�stateZkeysymrFr��comparerC�splitr��range�len�str�
tag_remove�mark_set�tag_add�see)r�rOZinsertpt�lineZlineat�dest�first�lastr!r!r"r�vsF��
�
zEditorWindow.home_callbackcCs�|�|j�|_t|jdddd�}tjdkr<|jjddtd�|jjdd	td�|jjd
dtd�|jjt	t
d�|jt	t
d�|j�d
|j
�|j�d
dd�|j�|j
�dS)NrTZgrey75)rHZborderwidthZ
backgroundrZ	_padding1z    )rUrZzCol: ?r�zLn: ?)rUrVz<<set-line-and-column>>z<KeyRelease>z<ButtonRelease>)r,rt�
status_barrzrrk�	set_labelZRIGHTr�ZBOTTOM�XrFr��set_line_and_columnr�Z
after_idle)r��sepr!r!r"r��s
�zEditorWindow.set_status_barcCs>|j�t��d�\}}|j�dd|�|j�dd|�dS)Nr�rZzCol: %sr�zLn: %s)rFr�ZINSERTr�r�r�)r�rOr�rZr!r!r"r��sz EditorWindow.set_line_and_column))�fileZ_File)�editZ_Edit)�formatZF_ormat)�runZ_Run)rcZ_Options)rZ_Window)r
Z_HelpcCs�|j}i|_}|jD]N\}}t|�\}}t||�d�d�}t||d|d�||<}|j|||d�qt��r�t|ddd�|d<}|jd|d	�|�	�t|jdd
�|_
|jdjdd
d|j
d�|jd�t
�|_|��dS)NZ_menu_postcommandr)r@�tearoff�postcommand)�labelr=�	underlineZapple)r@rZapplicationZIDLE)rr=�rrr:zRecent Files)rrr=r
)rsr��
menu_specs�prepstr�getattrrrZadd_cascaderZ
isCarbonTk�
fill_menus�recent_files_menuZinsert_cascader��END�base_helpmenu_length�reset_help_menu_entries)r�Zmbarr�r@rrrr=r!r!r"r~�s,
���zEditorWindow.createmenubarcCsJ|jd}|�d�}|dur d}||jkr<|�|jd|�t�|�dS)NrrarbrT)r�r�r��deleterZadd_windows_to_menu)r�r=rar!r!r"r��s


zEditorWindow.postwindowsmenucCs|j|}|j||d�dS)N)r�r��entryconfig)r�r=r�r�menuitemr!r!r"�update_menu_label�s
zEditorWindow.update_menu_labelcCs|j|}|j||d�dS)N�r�r)r�r=r�r�rr!r!r"r��s
zEditorWindow.update_menu_statecGsT|dkr<t|d�}t|�d�|�|�d�}d}|df}|jj|g|�R�dS)NZmovetorra�@0,0ZscrollZunitsrM)�float�round�	getlinenorF�yview)r�rO�argsZfraction�linesr!r!r"r��s�zEditorWindow.handle_yviewc	Cs0|j}|�d|j�d|j���}z |�dd|�o<|�|dd�}WntyVd}Yn0|sv|�ddd	�|�d
|�|js�|�	�|j}||_
tjdd�dk}|r�|j
d
d�|jD]N}z|\}}	}
Wnty�Yq�Yn0|
dur�q�t||
��}|j||d�q�|�|j|j�|�r,|jj
dd�dS)N�@�,r�r�r�Fr�r�rar�r:r;Zarrow)ZcursorrZibeamrM)rFr��x�yr��TclErrorr�r��rmenu�
make_rmenurOrrkZconfig�rmenu_specs�
ValueErrorrZentryconfigureZtk_popupZx_rootZy_root)r�rOrFZnewdexZin_selectionr$Ziswin�itemr�	eventnameZverify_stater�r!r!r"r��s>�


zEditorWindow.right_menu_event)ZCloserJNcCsft|jdd�}|jD]F}|d|d}}|durR|j|fdd�}|j||d�q|��q||_dS)Nrr	rTcSs|�|�dSr���event_generate�rFr)r!r!r"rX%sz(EditorWindow.make_rmenu.<locals>.command�rrX)rrrFr&�add_commandr�r$)r�r$r(rr)rXr!r!r"r% s

zEditorWindow.make_rmenucCs|��Sr�)�rmenu_check_copy�r�r!r!r"�rmenu_check_cut,szEditorWindow.rmenu_check_cutcCs6z|j�d�}Wnty$YdS0|r.dSdSdS)Nr�rd�normal�rFr�r#)r�Zindxr!r!r"r//s
zEditorWindow.rmenu_check_copycCs6z|jj�d|jd�Wnty,YdS0dSdS)Nztk::GetSelectionZ	CLIPBOARDrdr2)rFr��callr#r0r!r!r"�rmenu_check_paste7s
zEditorWindow.rmenu_check_pastecCst�|j�dSrL)rZAboutDialogrtr�r!r!r"r�?szEditorWindow.about_dialogcCst�|jd�dS)NZSettingsrM)rZConfigDialogrtr�r!r!r"r�EszEditorWindow.config_dialogcCs"|jr|j}n|j}t�|�dSrL)rqrtr
Z
show_idlehelp)r�rO�parentr!r!r"r�Ks

zEditorWindow.help_dialogc
Csptjdd�dkr`zt�|j�Wqlty\}z"tjdt|�|j	d�WYd}~qld}~00nt
�|j�dS)Nr:r;�Document Start Failure��title�messager6rM)rrkrg�	startfilerf�OSErrorrr�r�rF�
webbrowser�open)r�rO�whyr!r!r"r�Us
�zEditorWindow.python_docscCs|j�d�dS)Nz<<Cut>>rM�rFr+r�r!r!r"r�`szEditorWindow.cutcCs |j�d�sdS|j�d�dS)Nr�z<<Copy>>rM)rFZ
tag_rangesr+r�r!r!r"r�dszEditorWindow.copycCs|j�d�|j�d�dS)Nz	<<Paste>>r�rM)rFr+r�r�r!r!r"r�kszEditorWindow.pastecCs.|j�ddd�|j�dd�|j�d�dS)Nr�r�zend-1cr�rM)rFr�r�r�r�r!r!r"r�pszEditorWindow.select_allcCs |j�ddd�|j�d�dS)Nr�r�rar�rM)rFr�r�r�r!r!r"r�vszEditorWindow.remove_selectioncs*|jj�|jj�d�����fdd�}|S)N)zsel.first+1czsel.last-1ccs@|jd@dkr<z�d��d���Wnty:Yn0dS)NrGrr�r�)r�r#rN��
edge_indexZedges_tableZself_text_indexZself_text_mark_setr!r"�move_at_edge�sz<EditorWindow.move_at_edge_if_selection.<locals>.move_at_edge)rFr�r�)r�rBrCr!rAr"r�{s
z&EditorWindow.move_at_edge_if_selectioncCs|j�d�dS)Nz
<Meta-Delete>rMr@r�r!r!r"r��szEditorWindow.del_word_leftcCs|j�d�dS)Nz<Meta-d>rMr@r�r!r!r"r��szEditorWindow.del_word_rightcCst�|j�dSrL)r�findrFr�r!r!r"r��szEditorWindow.find_eventcCst�|j�dSrL)rZ
find_againrFr�r!r!r"r��szEditorWindow.find_again_eventcCst�|j�dSrL)rZfind_selectionrFr�r!r!r"r��sz!EditorWindow.find_selection_eventcCst�|j|j|j�dSrL)r	rFr�rpr�r!r!r"r��sz EditorWindow.find_in_files_eventcCst�|j�dSrL)rrFr�r!r!r"r��szEditorWindow.replace_eventcCsT|j}t�|dd�j}|durP|�ddd�|�d|�d��|�d�|��dS)	Nz
Go To Linez/Enter a positive integer
('big' = end of file):r�r�rar��.0rM)rFrZGoto�resultr�r�r�r�)r�rOrF�linenor!r!r"r��s�
zEditorWindow.goto_line_eventcCsnz|j�dd���}Wnty,d}Yn0t�|jdd|�j}|durj|jr^|j�|�n|j	�
|�|S)Nr�r�r>zOpen ModulezAEnter the name of a Python module
to search on sys.path and open:)rFr��stripr#rZ
ModuleNamerFrpr>r�r�)r�r@�	file_pathr!r!r"�open_module�s
�zEditorWindow.open_modulecCs|��dSrL)rJr�r!r!r"r��szEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s,|��}|dur,dSddlm}|�|j|�dS)NZPyShellEditorWindowrMr)�browser)	r�r��	__class__�__name__rJ�idlelibrKZ
ModuleBrowserrq)r�rOr�rKr!r!r"r��s�z EditorWindow.open_module_browsercCsddlm}|�|j�dS)Nr)�pathbrowserrM)rNrOZPathBrowserrq)r�rOrOr!r!r"r��szEditorWindow.open_path_browsercCs&ddl}tjddg}|j|dd�dS)Nrz-cz,from turtledemo.__main__ import main; main()F)�shellrM)�
subprocessr�
executable�Popen)r�rOrQ�cmdr!r!r"r��s�zEditorWindow.open_turtle_democCsN|durJ|dkrJ|j�dd|�|j�ddd�|j�ddd�|��dS)Nrr�z%d.0r�r�raz
insert +1l)rFr�r�r��center)r�rGr!r!r"�gotoline�s
zEditorWindow.gotolinecCs`|rtj�|�rdStj�tj�|��\}}tj�|�tvr@dS|j�dd�}|�	d�o^d|vS)NTr�z1.0 lineendz#!Zpython)
rgrhrm�splitextr��normcaserrFr��
startswith)r�r��baseZextr�r!r!r"r��szEditorWindow.ispythonsourcecCs|jr|j�|�d|_dSr�)rpZunregister_maybe_terminater0r!r!r"�
close_hook�szEditorWindow.close_hookcCs
||_dSr�)r[)r�r[r!r!r"�set_close_hookszEditorWindow.set_close_hookcCs2|jr|j�|�|��|j�|�|��dSr�)rpZfilename_changed_editr�rtZupdate_windowlist_registryr�r0r!r!r"r�s
z!EditorWindow.filename_change_hookcCsV|jr
dS|�|jj�r"|��|_|jrR|j�|j�|j�|j�|j�|j�dSr�)	r�r�r�r�r&r��removefilterr�r�r0r!r!r"�
_addcolorizer
s
zEditorWindow._addcolorizercCs,|js
dS|j��|j�|j�d|_dSr�)r�Zremovecolorsr�r]r0r!r!r"�_rmcolorizers

zEditorWindow._rmcolorizercCsH|��|��t�|j�|jdur0|j��|jdurD|j��dSr�)	r_r^r$r'rFr�Zupdate_highlight_colorsr�Z
update_colorsr0r!r!r"r�s


zEditorWindow.ResetColorizer�_cCsp|�d|�|�|�}|r6||jvr6|�d|d|�d|�|�krR|�d|�n|�d|d�|�|�dS)NZERRORz
 wordstart�
r�z+1c)r�r��
IDENTCHARSr�r�)r�rF�pos�charr!r!r"�colorize_syntax_error.s
z"EditorWindow.colorize_syntax_errorcCs2tjddddd�}|s"d|jd<ntj|jd<dS)NrAr$zcursor-blinkr]rDrr_)rr|rFr^)r�Zcursorblinkr!r!r"r�9s�z EditorWindow.update_cursor_blinkcCsN|jdur|j��|jdur(|j��t�|jdd�}||jd<|��dS)NrAr$r[)r�Zupdate_fontr�rr�rqrFr�)r�Znew_fontr!r!r"�	ResetFontCs




zEditorWindow.ResetFontcCs|t��|j_}|��D]\}}|jj|g|�R�q|��D]8}t�|�}|r>|��D]\}}|jj|g|�R�qXq>dSr�)	r�GetCurrentKeySetr+�default_keydefs�itemsrFZevent_delete�get_standard_extension_names�GetExtensionBindings)r��keydefsrO�keylist�
extensionName�xkeydefsr!r!r"�RemoveKeybindingsTs
zEditorWindow.RemoveKeybindingsc
CsBt��|j_}|��|��D]}t�|�}|r |�|�q i}|jjD]B}i||d<|dD](}|rb|d||dt|d�d<qbqJ|j	D]�}|j	|}|�
t�}|dur�q�|d7}td|�D]r}	|�
|	�dkr�|�|	d�}
|
r�|�|	d�}d}||v�r|||v�r|||}|r�t||�}
|j|	|
d�q�q�dS)NrrTrX�acceleratorrr>)rq)rrgr+rhrrjrk�menudefsrr�r�rr�rEZ	entrycget�get_acceleratorr)
r�rlrnroZ
menuEventDictr=r(ZmenubarItemrar�ZaccelZitemNamerOr!r!r"�ApplyKeybindings`s<
$




zEditorWindow.ApplyKeybindingscCs|jstjddddd�|_dS)NrAr\z
num-spacesrCrD)r�rr|r�r0r!r!r"r��s
�z#EditorWindow.set_notabs_indentwidthcCs|t��}|jd}|�t�}||jkr8|�|jd|�|rn|��|D]$}|�|d�}|j	|d|d�qH||jd<dS)Nr
rTrr-)
rZGetAllExtraHelpSourcesListr�r�rrrr��"_EditorWindow__extra_help_callbackr.)r�Z	help_listZhelpmenuZhelpmenu_length�entryrTr!r!r"r�s


z$EditorWindow.reset_help_menu_entriescs|f�fdd�	}|S)Nc
s�|�d�stj�|�}tjdd�dkrtzt�|�Wq~typ}z"tj	dt
|��jd�WYd}~q~d}~00n
t�
|�dS)N)ZwwwZhttpr:r;r7r8)rYrgrhrorrkr;r<rr�r�rFr=r>)�helpfiler?r0r!r"�display_extra_help�s

�z>EditorWindow.__extra_help_callback.<locals>.display_extra_helpr!)r�rwrxr!r0r"Z__extra_help_callback�sz"EditorWindow.__extra_help_callbackc
s�g}|j}|rRtj�|�rRt|dddd��}|��}Wd�n1sH0Y|r�tj�|�d}||vrx|�|�|�d|�g�|D]*}d|vs�tj�|dd��s���	|�q��fd	d
�|D�}d}|dt
|��}|�r~z@t|dddd��}|�|�Wd�n1�s0YWnXt�y|}z>t
|jd
d��shd|j_tjdd|�d�|jd�WYd}~n
d}~00|jjD]Z}	|	j}
|
�dt�t|�D]8\}}|��}|	�|�}
|
j||d||
dd��q��q�dS)N�r�utf_8r)r*�errorsrar�rbcsg|]}|�vr|�qSr!r!)�.0rh�Z	bad_pathsr!r"�
<listcomp>�rQz9EditorWindow.update_recent_files_list.<locals>.<listcomp>Z1234567890ABCDEFGHIJK�w�recentfiles_messageFTzIDLE Warningz)Cannot save Recent Files list to disk.
  z
Select OK to continue.r8r�)rrXr)rxrgrhr�r>�	readlines�abspath�remover��appendr��
writelinesr<rrqr�r�showwarningrFrtrwrrr�	enumerate�rstrip�#_EditorWindow__recent_file_callbackr.)r��new_fileZrf_listrIZrf_list_filerhZulcharsZrf_file�err�instancer=�i�	file_name�callbackr!r~r"r��s\�&
�.��
�z%EditorWindow.update_recent_files_listcs|f�fdd�	}|S)Ncs�jj|d�dS)N)ZeditFile)r�r>)Z
fn_closurer0r!r"�open_recent_file�sz=EditorWindow.__recent_file_callback.<locals>.open_recent_filer!)r�r�r�r!r0r"Z__recent_file_callback�sz#EditorWindow.__recent_file_callbackcCs�|��}|��}|r*|r*|d|t}n|r4|}n|r>|}nd}|pL|pL|}|��sfd|}d|}|j�|�|j�|�dS)Nz - �untitledz*%s*z*%s)�short_title�
long_title�_py_version�	get_savedrtZwm_titleZwm_iconname)r�ZshortZlongr9Ziconr!r!r"r��szEditorWindow.saved_change_hookcCs
|j��Sr�)r�r�r0r!r!r"r��szEditorWindow.get_savedcCs|j�|�dSr�)r��	set_saved)r��flagr!r!r"r��szEditorWindow.set_savedcCs|j��dSr�)r��
reset_undor0r!r!r"r��szEditorWindow.reset_undocCs|jj}|rtj�|�SdS)Nr�)r�r�rgrhr�)r�r�r!r!r"r��szEditorWindow.short_titlecCs|jjp
dS)Nr>)r�r�r0r!r!r"r��szEditorWindow.long_titlecCs|��dSrL)rUr�r!r!r"r�sz EditorWindow.center_insert_eventr�cCsH|j}|��\}}|�|�}||}td||d�}|�t|��dS)NrTr<)rF�getwindowlinesr�maxrr)r��markrFrt�botrGrHZnewtopr!r!r"rUs
zEditorWindow.centercCsN|j}|�d�}|�d�}||krF|��dkrFt|d�}||d}||fS)Nrz@0,65535rTrH)rFrZwinfo_heightrC)r�rFrtr�rHr!r!r"r�s

zEditorWindow.getwindowlinescCs|j}tt|�|���Sr�)rFrCrr�)r�r�rFr!r!r"rszEditorWindow.getlinenocCs(|j��}t�d|�}ttt|����S)Nz(\d+)x(\d+)\+(-?\d+)\+(-?\d+))rtZwm_geometry�re�match�listr�rC�groups)r�Zgeom�mr!r!r"�get_geometrys
zEditorWindow.get_geometrycCs|��dSrL)r�r�r!r!r"r� szEditorWindow.close_eventcCsH|jrD|��s:|j��dkr&|j��|j��|j��|j��SdS)Nr2)r�r�rtr�Z	deiconify�lowerZlift�	maybesaver0r!r!r"r�$s


zEditorWindow.maybesavecCs:z"|��}t|�dkr|��|WSty4Yn0dS)NZcancel)r�r��_close�AttributeError)r�Zreplyr!r!r"r�-szEditorWindow.closecCs�|jjr|j|jjd�t�|j�|��|j��d|_d|_|j	rX|j	��d|_	d|_
d|_|j��d|_|j
��|jr�|��dS)N)r�)r�r�r�rZunregister_callbackr��unload_extensionsr�r�r�rFrvr�rtZdestroyr[r0r!r!r"r�6s"



zEditorWindow._closecCsi|_|��dSr�)�
extensions�load_standard_extensionsr0r!r!r"r�JszEditorWindow.load_extensionscCs0t|j���D]}t|d�r|��qi|_dS)Nr�)r�r��valuesr�r�)r��insr!r!r"r�Ns

zEditorWindow.unload_extensionscCsD|��D]6}z|�|�Wqtdt|��t��Yq0qdS)NzFailed to load extension)rj�load_extension�print�repr�	traceback�	print_exc)r�r@r!r!r"r�Tsz%EditorWindow.load_standard_extensionscCstjdd�S)NT)Zeditor_only)rZ
GetExtensionsr0r!r!r"rj\sz)EditorWindow.get_standard_extension_namesZZzDummyZzzdummyc		Cs6|j�||�}z<ztjd|td�}Wn ttfyFt�|�}Yn0Wntyhtd|��Yn0t||�}t	�
|�}t|d�r�|�|j
|�||�}||j|<|�r2|�|�|D]t}|�dd�}|dd�dkr�|dd�}q�|d	d�d
k�r
|dd	�}q�|d}t||�r�|j�|t||��q�dS)Nr�)�packagez
Failed to import extension: rr�-r`rTr�rbr�Z_event)�extfilesr��	importlib�
import_module�__package__�ImportError�	TypeErrorr�rrrkr�r
rrr�rrrFr�)	r�r@Zfname�mod�clsrlr�ZveventZ
methodnamer!r!r"r�cs4






zEditorWindow.load_extensioncCsH|dur|jj}|j}||_|��D]\}}|r$|j|g|�R�q$dSr�)r+rhrFrlrir�)r�rlrFrOrmr!r!r"rszEditorWindow.apply_bindingsc	Cs�|dur|jj}|dur |jj}|j}|j}|D]�\}}|�|�}|sHq0|D]�}|s^|��qL|\}	}
|	dd�dk}|r�|	dd�}	t|	�\}}	t||
�}
||
fdd�}|r�|�	|
t
�}|j|	|||
|d�qL|j|	|||
d�qLq0dS)NrT�!cSs|�|�dSr�r*r,r!r!r"rX�sz(EditorWindow.fill_menus.<locals>.command)rrrXrqZvariable)rrrXrq)
r+rrrhr�rFr�r�rrs�get_var_objZ
BooleanVarZadd_checkbuttonr.)r�rrrlr�rFZmnameZ	entrylistr=rvrr)ZcheckbuttonrrqrX�varr!r!r"r
�s<


��zEditorWindow.fill_menuscCs&|�|�}|r|��}|St|��dSr�)r�r��	NameError)r�r@r��valuer!r!r"�getvar�s

zEditorWindow.getvarcCs(|�||�}|r|�|�nt|��dSr�)r�r�r�)r�r@r��vartyper�r!r!r"�setvar�szEditorWindow.setvarcCs,|j�|�}|s(|r(||j�|j|<}|Sr�)rvr�rF)r�r@r�r�r!r!r"r��szEditorWindow.get_var_objcCs,|jr$|j�d|�p"d|j�|�vSdSdS)NZTODO�STRINGrT)r�rF�
tag_prevrangeZ	tag_names)r�Z
text_indexr!r!r"�is_char_in_string�s
�zEditorWindow.is_char_in_stringcCs<z"|j�d�}|j�d�}||fWSty6YdS0dS)Nr�r�)NNr3)r�r�r�r!r!r"�get_selection_indices�s
z"EditorWindow.get_selection_indicescCs|jdpt}t|�S)N�tabs)rF�TK_TABWIDTH_DEFAULTrC)r�Zcurrentr!r!r"�get_tk_tabwidth�szEditorWindow.get_tk_tabwidthc	CsB|j}|��|kr>|j�dd|dd|jd|�}|j|d�dS)Nr[r�z
-displayof�n)r�)rFr�r�r4ZmasterZ	configure)r�ZnewtabwidthrFZpixelsr!r!r"�set_tk_tabwidth�s�zEditorWindow.set_tk_tabwidthcCsP|r@|r@|��}d|kr$dkr.nn||_|j|jkr@d|_|�|j�dS)Nr<rF)�guess_indentr�r�r�r�)r�r�Zguessr�r!r!r"r��sz#EditorWindow.set_indentation_paramsc
Cs>|j}|��\}}|r6|r6|�||�|�d|�dS|�dd�}|dkrp|�ddd�rd|�d�n|��dS|dd	vr�|�d�dS|j}t|�	|��}|d
|j
|j
}d}	||jkr�q�|dd�}|	d
}	t|�	|��}||ks�|dd	vr�q�q�|��|�d|	d�||k�r2|�
dd
||�|��dS)Nr�rMr�r>r�r�z	insert-1crb� 	rTrz
insert-%dcr�)rFr�rr�r�r�Zbellr�r��
expandtabsr�ryr�r�r�)
r�rOrFr�r��charsr�ZhaveZwantZ
ncharsdeletedr!r!r"r��s@


z"EditorWindow.smart_backspace_eventc
Cs|j}|��\}}|��z�|rb|rbt|�t|�krJ|j�|�W|��S|�||�|�d|�|�	dd�}t
||j�\}}|t|�kr�|�
||j�n>|jr�d}n&t|�|j��}|j}	d|	||	}|�d|�|�d�W|��dS|��0dS)Nr�r�r�r�rM)rFr�r��
index2liner�r�r�rr�r��get_line_indentr�r��reindent_tor�r�r�r�r�)
r�rOrFr�r��prefix�rawZ	effectiveZpadr�r!r!r"r�)s4�
�zEditorWindow.smart_indent_eventc	Cs|j}|��\}}|���z�|r>|r>|�||�|�d|�|�dd�}dt|�}}||krv||dvrv|d7}qX||kr�|�dd�W|�d�|�	�dS|d|�}d}|r�|ddvr�||j
kr�|dd�}|d7}q�|r�|�d	|d�|�d�dv�r|�d�q�|�dd�t|�d��}	t
�|j|j�}
|j
�s�|jD]`}t|	|d�}t|�d
}
|�|
d�}|
�|�|
�|�|
��}|du�s�|dk�rJ�q��qJ|
�|�p�d�n@|�dd�}|�r�|d}
nd}
|�|
d�}|
�|�|
�d�|
��}|t
jk�r�|t
jk�r nn|t
jk�r:|�d|�nT|t
jk�rV|�|
���n8|t
j k�r�|
�!�dk�r~|�d|�n|�|
�"��nW|�d�|�	�dS|
�#�}|�d|�|
�$��r�|�%|�n|�r�|
�&��r�|�'|�W|�d�|�	�dS|�d�|�	�0dS)
Nr�r�rr�rTrarMrbzinsert - %d charsrEZconsoler�)(rFr�r�rr�r�r�r�r�r�ryr�r�rZParserr�r�r�r�r�Zset_codeZfind_good_parse_start�_build_char_in_string_funcZset_lor�Zget_continuation_typeZC_NONEZC_STRING_FIRST_LINEZC_STRING_NEXT_LINESZ	C_BRACKETr�Zcompute_bracket_indentZC_BACKSLASHZget_num_lines_in_stmtZcompute_backslash_indentZget_base_indent_stringZis_block_openerr�Zis_block_closerr�)r�rOrFr�r�r�r�r��indent�lnor"�contextZstartatZstartatindexZrawtextZbodryr�r!r!r"r�Ls�	
T
�


�




�


��
z%EditorWindow.newline_and_indent_eventcCs||jfdd�}|S)NcSs||d|�S)Nz+%dcr!)�offsetZ_startindexZ_icisr!r!r"�inner�sz6EditorWindow._build_char_in_string_func.<locals>.inner)r�)r�Z
startindexr�r!r!r"r��s�
z'EditorWindow._build_char_in_string_funccCs2|jr&t||j�\}}d|d|Sd|SdS)Nr�r�)r��divmodr�)r�r�ZntabsZnspacesr!r!r"�_make_blanks�szEditorWindow._make_blankscCsJ|j}|��|�ddd�r(|�dd�|r>|�d|�|��|��dS)Nr�z!=r�)rFr�r�rr�r�r�)r�rZrFr!r!r"r��szEditorWindow.reindent_tocCsPt|j|j���\}}|r@|r@t||j�\}}t||j�\}}nd}}||S�Nr)�IndentSearcherrFr�rr�)r�ZopenerZindentedr�ZindentsmallZindentlarger!r!r"r��szEditorWindow.guess_indentcCsN|jdurdS|jjr&|j��d}n|j��d}|jdd|�d�d�dS)NZShowZHidercrez
 Line Numbers)r=r�r)r�Zis_shownZhide_sidebarZshow_sidebarr)r�rOZ
menu_labelr!r!r"r��s


�z&EditorWindow.toggle_line_numbers_event)NNNN)N)N)N)N)N)N)N)N)N)N)N)N)r�)r�)N)NN)N)N)T)N)�rM�
__module__�__qualname__Zidlelib.percolatorr%Zidlelib.colorizerr&r'Zidlelib.undor(Zidlelib.iomenur)r*rNr+Zidlelib.statusbarr,Zidlelib.autocompleter-Zidlelib.autoexpandr.Zidlelib.calltipr/Zidlelib.codecontextr0Zidlelib.sidebarr1Zidlelib.formatr2r3r4r5Zidlelib.parenmatchr6Zidlelib.squeezerr7Zidlelib.zoomheightr8r�getfilesystemencodingZfilesystemencodingrfr�r�r�r�r�r�r�r�r�r
r~r�rr�r�r$r�r&r%r1r/r5r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rJr�r�r�r�rVr�r[r\r�r^r_r��stringZ
ascii_lettersZdigitsrbrer�rfrprtr�rrur�r�r�r�r�r�r�r�r�rUr�rr�r�r�r�r�r�r�r�rjr�r�rr
r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r!r!r!r"r$2s�


+

%�









		

$
.


		�
	
%


	,#v
	r$cCstt|��Sr�)rCr)r�r!r!r"r�sr�z[ \t]*cCs$t�|�}|��t|���|��fSr�)�_line_indent_rer�rar��groupr�)r�r�r�r!r!r"r�s
r�c@s8eZdZdd�Zdd�Zejejdfdd�Zdd	�Z	d
S)r�cCs(||_||_d|_|_d|_|_dSr�)rFr�r��finished�blkopenline�indentedline)r�rFr�r!r!r"r�szIndentSearcher.__init__cCsL|jr
dS|jd}|_t|�d}|j�|dd�r:dS|j�||d�S)Nr>rTrEz>=raz lineend+1c)r�r�r�rFr�r�)r�r�r�r!r!r"�readlineszIndentSearcher.readline)�class�def�for�if�try�whilec		Cs>|jrn2||kr ||vr ||_n||kr:|jr:||_d|_dS)NrT)r�r�r�)	r�rE�token�startrar��INDENT�NAMEZOPENERSr!r!r"�
tokeneater&szIndentSearcher.tokeneaterc	Csltj}|jt_zHz$t�|j�}|D]}|j|�q"WntjtfyLYn0W|t_n|t_0|j|j	fSr�)
�tokenize�tabsizer��generate_tokensr�r��
TokenError�SyntaxErrorr�r�)r�Zsave_tabsize�tokensr�r!r!r"r2szIndentSearcher.runN)
rMr�r�r�r�r�r�r�r�rr!r!r!r"r�s
�
r�cCs6|�d�}|dkr.|d|�||dd�}||fS)Nr`rrT)rD)�sr�r!r!r"rDs
r�[�]�/)ZbracketleftZbracketrightZslashcCs�|�|�}|rt��r"|dvr"dS|d}t�ddd�|�}t�ddd�|�}t�d	d|�}t�d
d|�}t�dd
|�}t�dd|�}t�dd|�}t�dd|�}t�dd|�}|S)N>rSrKrRr>rz-[a-z]\bcSs|����Sr�)r��upper�r�r!r!r"rP]rQz!get_accelerator.<locals>.<lambda>z\b\w+\bcSst�|��|���Sr�)�keynamesr�r�rr!r!r"rP^rQzKey-ZCancelz
Ctrl-BreakzControl-zCtrl-r��+z><r�r�r�)r�rZ	isCocoaTkr��sub)rlr)rmr�r!r!r"rsSs
rscCs4|j}|�ddd�|�ddd�|�ddd�dS)	NZtcl_wordBreakAfterza brr�Z
tcl_wordcharsz\wZtcl_nonwordcharsz\W)r�r4)rqr�r!r!r"�
fixwordbreaksisrcCs~|}t|�tjdd�r&tjd}nd}t�|d�t||d�}|j}d|d<td�D] }|�dd|t	|�d�qXdS)	NrT)rqr��
rH�r�z  ra)
rr�argvrZsetupAppr$rFr�r�r�)r6rqr�rrFr�r!r!r"�_editor_windowrsr�__main__)rAzidlelib.idle_test.test_editorr<F)�	verbosity�exit)r):�
importlib.abcr��importlib.utilrgrkr�r�rr�r�r=ZtkinterZtkinter.fontrZtkinter.ttkrrrZidlelib.configrrNrr	r
rrZidlelib.multicallr
rrrrZidlelib.treerZidlelib.utilrrr�Zpython_versionr�rr#r$r��compiler�r�r�rrrsrrrMZunittestrAZidlelib.idle_test.htestrr!r!r!r"�<module>sz
Z

4
�