Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/idlelib/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/idlelib/__pycache__/editor.cpython-38.opt-2.pyc
U

@��g��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlTddlm
Z
ddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddl m!Z!ddlm"Z"dZ#de�$�Z%ejdkZ&dd�Z'Gdd�d�Z(dd�Z)e�*d�Z+dd�Z,Gd d!�d!�Z-d"d#�Z.d$d%d&d'�Z/d(d)�Z0d*d+�Z1d,d-�Z2e3d.k�r�dd/l4m5Z5e5d0d1d2d3�dd4l6m7Z7e7e2�dS)5�N)�*)�Font)�	Scrollbar)�simpledialog)�
messagebox)�idleConf)�configdialog)�grep)�help)�
help_about)�macosx)�MultiCallCreator)�pyparse)�query)�replace)�search)�wheel_event)�window�z (%s)�darwincCsbtj\}}}}}d||f}|d|f7}|dkrB|d|f7}n|dkr^|d|d|f7}|S)Nz%s%sz%s�	candidatezrc%s�finalr)�sys�version_info)�major�minor�micro�level�serial�release�r �-/opt/cppython/lib/python3.8/idlelib/editor.py�_sphinx_version%sr"c@sFeZdZddlmZddlmZmZddlm	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 �Z2d!d"d#d$d%d&d'gZ3d(d)�Z4d*d+�Z5d,d-�Z6d.d/�Z7d0d1�Z8dZ9d2d3�Z:d4gZ;d5d6�Z<d7d8�Z=d9d:�Z>d;d<�Z?d�d=d>�Z@d�d?d@�ZAd�dAdB�ZBd�dCdD�ZCdEdF�ZDdGdH�ZEdIdJ�ZFd�dKdL�ZGd�dMdN�ZHdOdP�ZIdQdR�ZJdSdT�ZKdUdV�ZLdWdX�ZMdYdZ�ZNd[d\�ZOd]d^�ZPd_d`�ZQdadb�ZRdcdd�ZSd�dedf�ZTd�dgdh�ZUd�didj�ZVdkdl�ZWdmdn�ZXdodp�ZYdqdr�ZZdsdt�Z[dudv�Z\dwdx�Z]dydz�Z^e_j`e_jad{Zbd|d}�Zcd~d�Zdd�d��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CsH	ddlm}tjdk�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%�|f|�|_&}|j&|j_'|�(�|�)�|j�*d#|j+�|j�,d$|j-�t.�/��rt|�,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�}|�rP|��df�}|dk�r$dg}|dk�r>|���|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��	r6|��|�|_�tj#ddd�d^d��	r&|���|�,d�|j��n|��d�d�d��dS)�Nr)�
ScriptBindingZDocz
index.html�linuxzpython-docs-z%s.%s.%s�z/var/www/html/python/z/var/www/html/python/index.htmlz/usr/share/doc/�winzPython%s.chmrz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/�)�menuzrecent-files.lst��vbar)�name�mainr#�width�int��type�text�ZnoneZ
wordprocessor�height)r@�padx�wrapZhighlightthicknessrBZtabstylerHZWM_DELETE_WINDOW�<<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.runscriptr8r#�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
ZTextrFZfocused_widget�
createmenubar�apply_bindings�protocol�close�bind�close_eventrZisAquaTk�right_menu_eventr�handle_winconfig�cut�copy�paste�center_insert_event�help_dialog�python_docs�about_dialog�
config_dialog�open_module_event�
select_all�remove_selection�
find_event�find_again_event�find_in_files_event�find_selection_event�
replace_event�goto_line_event�smart_backspace_event�newline_and_indent_event�smart_indent_eventr2�fregion�indent_region_eventZdedent_region_eventZcomment_region_eventZuncomment_region_eventZtabify_region_eventZuntabify_region_eventr3Ztoggle_tabs_eventZchange_indentwidth_event�move_at_edge_if_selection�
del_word_left�del_word_right�
home_callback�dict�new_callbackZclose_all_callback�open_module_browser�open_path_browser�open_turtle_demo�set_status_bar�packZLEFTZBOTHZrowconfigureZcolumnconfigure�handle_yviewZgridZNSEW�set�GetFontZ	focus_set�	set_width�usetabs�tabwidth�indentwidth�set_notabs_indentwidth�hasattrr_�update_cursor_blink�num_context_linesr$�perr'�undo�insertfilter�undo_block_start�undo_block_stopZset_saved_change_hook�saved_change_hookr(�ioZset_filename_change_hook�filename_change_hookZ	good_load�set_indentation_params�color�code_context�line_numbers�exists�loadfile�ispythonsourceZset_filename�ResetColorizer�update_recent_files_list�load_extensions�menudict�get�index�
add_separator�	wmenu_endZregister_callback�postwindowsmenurZ
askintegerrZaskyesno�	showerror�	event_addr,Zautocomplete_eventZtry_open_completions_eventZforce_open_completions_eventr-Zexpand_word_eventr1Zformat_paragraph_eventr5Zflash_paren_eventZparen_closed_eventZcheck_module_eventZrun_module_eventZrun_custom_eventr4Z	do_rstripr.�ctipZtry_open_calltip_eventZrefresh_calltip_eventZforce_open_calltip_eventr7Zzoom_height_event�allow_code_contextr/Ztoggle_code_context_event�update_menu_state�allow_line_numbersr0�toggle_line_numbers_event)�selfrq�filename�keyrrr8ZdochomeZpyverZbasepathZchmfilerur|r?rBZtext_optionsrFr��indentsZ	usespacesr�r�r��	is_py_srcr=rbZautocompleteZ
parenmatchZ
scriptbindingr�r r r!�__init__Hs�
��

��
���







�






��
��
�
��zEditorWindow.__init__cCs|��dS�N)r��r�rPr r r!r�`szEditorWindow.handle_winconfigcCs^|j}tt|jj|�d�|�d�g��}|��d|}t||�d�d��d�}|||_	dS)NZborderrIr<r\)r\�0)
rF�sum�map�tkZgetintZcgetZwinfo_widthr�measurerB)r�rFZ
inner_paddingZpixel_widthZzero_char_widthr r r!r�cs��zEditorWindow.set_widthcCs|j��\}}|j�|�dSrM)r�Zdefaultfilenamerq�new)r�rP�dirname�basenamer r r!r�pszEditorWindow.new_callbackcCs�|jd@dkr|jdkrdS|j�d�rd|j�ddd�rd|j�ddd�rdt|j�d��d�d	�}n8|j�dd�}tt	|��D]}||d
kr~q�q~t	|�}t|j�d��d�d	�}||kr�d}dt
|�d
}|jd	@dkr�|j�ddd�n�|j�d��s|j�dd�n@|j�|j�d�d|j�d���rB|j�dd�n|j�dd�|j�|�}|j�d�}|j�|d|��r�||}}|j�ddd�|j�
d||�|j�d|�|j�d�dS)N�rZHomeZiomark�<=zinsert lineend�insert linestart�.rU)� �	�insertzinsert linestart+�c�sel�1.0rb�	sel.firstZ	my_anchor�<�sel.last�>rN)�stateZkeysymrFr��comparerC�splitr��range�len�str�
tag_remove�mark_set�tag_add�see)r�rPZinsertpt�lineZlineat�dest�first�lastr r r!r�usF��
�
zEditorWindow.home_callbackcCs�|�|j�|_t|jdddd�}tjdkr<|jjddtd�|jjdd	td�|jjd
dtd�|jjt	t
d�|jt	t
d�|j�d
|j
�|j�d
dd�|j�|j
�dS)NrUZgrey75)rHZborderwidthZ
backgroundrZ	_padding1z    )rVr[zCol: ?r�zLn: ?)rVrWz<<set-line-and-column>>z<KeyRelease>z<ButtonRelease>)r+ru�
status_barr{rrl�	set_labelZRIGHTr�ZBOTTOM�XrFr��set_line_and_columnr�Z
after_idle)r��sepr r r!r��s
�zEditorWindow.set_status_barcCs>|j�t��d�\}}|j�dd|�|j�dd|�dS)Nr�r[zCol: %sr�zLn: %s)rFr�ZINSERTr�r�r�)r�rPr�r[r r r!r�sz EditorWindow.set_line_and_column)�fileZ_File)�editZ_Edit)�formatZF_ormat)�runZ_Run)rdZ_Options)rZ_Window)r
Z_HelpcCs�|j}i|_}|jD]N\}}t|�\}}t||�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)rr	r=r
)rtr��
menu_specs�prepstr�getattrrsZadd_cascaderZ
isCarbonTk�
fill_menus�recent_files_menuZinsert_cascader��END�base_helpmenu_length�reset_help_menu_entries)r�Zmbarr�r@rr	rr=r r r!r~�s,
���zEditorWindow.createmenubarcCsJ|jd}|�d�}|dkr d}||jkr<|�|jd|�t�|�dS)NrrbrcrU)r�r�r��deleterZadd_windows_to_menu)r�r=rbr 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_statecGsR|dkr<t|d�}t|�d�|�|�d�}d}|df}|jj|f|��dS)NZmovetorrb�@0,0ZscrollZunitsrN)�float�round�	getlinenorF�yview)r�rP�argsZfraction�linesr r r!r��s�zEditorWindow.handle_yviewc	Cs4|j}|�d|j�d|j���}z |�dd|�o<|�|dd�}Wntk
rXd}YnX|sx|�ddd	�|�d
|�|js�|�	�|j}||_
tjdd�dk}|r�|j
d
d�|jD]P}z|\}}	}
Wntk
r�Yq�YnX|
dkr�q�t||
��}|j||d�q�|�|j|j�|�r0|jj
dd�dS)N�@�,r�r�r�Fr�r�rbr�r:r;Zarrow)ZcursorrZibeamrN)rFr��x�yr��TclErrorr�r��rmenu�
make_rmenurPrrlZconfig�rmenu_specs�
ValueErrorr
ZentryconfigureZtk_popupZx_rootZy_root)r�rPrFZnewdexZin_selectionr%Ziswin�itemr�	eventnameZverify_stater�r r r!r��s>�


zEditorWindow.right_menu_event)�CloserKNcCsft|jdd�}|jD]F}|d|d}}|dk	rR|j|fdd�}|j||d�q|��q||_dS)Nrr
rUcSs|�|�dSr���event_generate�rFr*r r r!rY$sz(EditorWindow.make_rmenu.<locals>.command�rrY)rsrFr'�add_commandr�r%)r�r%r)rr*rYr r r!r&s

zEditorWindow.make_rmenucCs|��Sr�)�rmenu_check_copy�r�r r r!�rmenu_check_cut+szEditorWindow.rmenu_check_cutcCs8z|j�d�}Wntk
r&YdSX|r0dSdSdS)Nr�re�normal�rFr�r$)r�Zindxr r r!r1.s
zEditorWindow.rmenu_check_copycCs8z|jj�d|jd�Wntk
r.YdSXdSdS)Nztk::GetSelectionZ	CLIPBOARDrer4)rFr��callr$r2r r r!�rmenu_check_paste6s
zEditorWindow.rmenu_check_pastecCst�|j�dSrM)rZAboutDialogrur�r r r!r�>szEditorWindow.about_dialogcCst�|jd�dS)NZSettingsrN)rZConfigDialogrur�r r r!r�DszEditorWindow.config_dialogcCs"|jr|j}n|j}t�|�dSrM)rrrur
Z
show_idlehelp)r�rP�parentr r r!r�Js

zEditorWindow.help_dialogc
Csntjdd�dkr^zt�|j�Wqjtk
rZ}ztjdt|�|j	d�W5d}~XYqjXnt
�|j�dS)Nr:r;�Document Start Failure��title�messager8rN)rrlrh�	startfilerg�OSErrorrr�r�rF�
webbrowser�open)r�rP�whyr r r!r�Ts�zEditorWindow.python_docscCs|j�d�dS)Nz<<Cut>>rN�rFr-r�r r r!r�_szEditorWindow.cutcCs |j�d�sdS|j�d�dS)Nr�z<<Copy>>rN)rFZ
tag_rangesr-r�r r r!r�cszEditorWindow.copycCs|j�d�|j�d�dS)Nz	<<Paste>>r�rN)rFr-r�r�r r r!r�jszEditorWindow.pastecCs.|j�ddd�|j�dd�|j�d�dS)Nr�r�zend-1cr�rN)rFr�r�r�r�r r r!r�oszEditorWindow.select_allcCs |j�ddd�|j�d�dS)Nr�r�rbr�rN)rFr�r�r�r r r!r�uszEditorWindow.remove_selectioncs*|jj�|jj�d�����fdd�}|S)N)zsel.first+1czsel.last-1ccsB|jd@dkr>z�d��d���Wntk
r<YnXdS)NrGrr�r�)r�r$rO��
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�rDrEr rCr!r�zs
z&EditorWindow.move_at_edge_if_selectioncCs|j�d�dS)Nz
<Meta-Delete>rNrBr�r r r!r��szEditorWindow.del_word_leftcCs|j�d�dS)Nz<Meta-d>rNrBr�r r r!r��szEditorWindow.del_word_rightcCst�|j�dSrM)r�findrFr�r r r!r��szEditorWindow.find_eventcCst�|j�dSrM)rZ
find_againrFr�r r r!r��szEditorWindow.find_again_eventcCst�|j�dSrM)rZfind_selectionrFr�r r r!r��sz!EditorWindow.find_selection_eventcCst�|j|j|j�dSrM)r	rFr�rqr�r r r!r��sz EditorWindow.find_in_files_eventcCst�|j�dSrM)rrFr�r r r!r��szEditorWindow.replace_eventcCsT|j}t�|dd�j}|dk	rP|�ddd�|�d|�d��|�d�|��dS)	Nz
Go To Linez/Enter a positive integer
('big' = end of file):r�r�rbr��.0rN)rFrZGoto�resultr�r�r�r)r�rPrF�linenor r r!r��s�
zEditorWindow.goto_line_eventcCspz|j�dd���}Wntk
r.d}YnXt�|jdd|�j}|dk	rl|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
ModuleNamerHrqr@r�r�)r�r@�	file_pathr r r!�open_module�s
�zEditorWindow.open_modulecCs|��dSrM)rLr�r r r!r��szEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s,|��}|dkr,dSddlm}|�|j|�dS)NZPyShellEditorWindowrNr)�browser)	r�r��	__class__�__name__rL�idlelibrMZ
ModuleBrowserrr)r�rPr�rMr r r!r��s�z EditorWindow.open_module_browsercCsddlm}|�|j�dS)Nr)�pathbrowserrN)rPrQZPathBrowserrr)r�rPrQr r r!r��szEditorWindow.open_path_browsercCs&ddl}tjddg}|j|dd�dS)Nrz-cz,from turtledemo.__main__ import main; main()F)�shellrN)�
subprocessr�
executable�Popen)r�rPrS�cmdr r r!r��s�zEditorWindow.open_turtle_democCsN|dk	rJ|dkrJ|j�dd|�|j�ddd�|j�ddd�|��dS)Nrr�z%d.0r�r�rbz
insert +1l)rFr�r�r��center)r�rIr r r!�gotoline�s
zEditorWindow.gotolinecCs`|rtj�|�rdStj�tj�|��\}}tj�|�dkr@dS|j�dd�}|�d�o^d|kS)NT)z.pyz.pywr�z1.0 lineendz#!Zpython)	rhrirn�splitextr��normcaserFr��
startswith)r�r��base�extr�r r r!r��szEditorWindow.ispythonsourcecCs|jr|j�|�d|_dSr�)rqZunregister_maybe_terminater2r r r!�
close_hook�szEditorWindow.close_hookcCs
||_dSr�)r^)r�r^r r r!�set_close_hookszEditorWindow.set_close_hookcCs2|jr|j�|�|��|j�|�|��dSr�)rqZfilename_changed_editr�ruZupdate_windowlist_registryr�r2r 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�r2r r r!�
_addcolorizers
zEditorWindow._addcolorizercCs,|js
dS|j��|j�|j�d|_dSr�)r�Zremovecolorsr�r`r2r r r!�_rmcolorizers

zEditorWindow._rmcolorizercCsH|��|��t�|j�|jdk	r0|j��|jdk	rD|j��dSr�)	rbrar#r&rFr�Zupdate_highlight_colorsr�Z
update_colorsr2r r r!r�s


zEditorWindow.ResetColorizer�_cCsp|�d|�|�|�}|r6||jkr6|�d|d|�d|�|�krR|�d|�n|�d|d�|�|�dS)N�ERRORz
 wordstart�
r�z+1c)r�r��
IDENTCHARSr�r�)r�rF�pos�charr r r!�colorize_syntax_error-s
z"EditorWindow.colorize_syntax_errorcCs2tjddddd�}|s"d|jd<ntj|jd<dS)NrAr#zcursor-blinkr^rDrr`)rr}rFr_)r�Zcursorblinkr r r!r�8s�z EditorWindow.update_cursor_blinkcCsN|jdk	r|j��|jdk	r(|j��t�|jdd�}||jd<|��dS)NrAr#r\)r�Zupdate_fontr�rr�rrrFr�)r�Znew_fontr r r!�	ResetFontBs




zEditorWindow.ResetFontcCsxt��|j_}|��D]\}}|jj|f|��q|��D]6}t�|�}|r<|��D]\}}|jj|f|��qVq<dSr�)	r�GetCurrentKeySetr*�default_keydefs�itemsrFZevent_delete�get_standard_extension_names�GetExtensionBindings)r��keydefsrP�keylist�
extensionName�xkeydefsr r r!�RemoveKeybindingsSs
zEditorWindow.RemoveKeybindingsc
CsBt��|j_}|��|��D]}t�|�}|r |�|�q i}|jjD]B}i||d<|dD](}|rb|d||dt|d�d<qbqJ|j	D]�}|j	|}|�
t�}|dkr�q�|d7}td|�D]r}	|�
|	�dkr�|�|	d�}
|
r�|�|	d�}d}||k�r|||k�r|||}|r�t||�}
|j|	|
d�q�q�dS)NrrUrY�acceleratorrr>)ru)rrkr*rlrrnro�menudefsrr�r�rr�rEZ	entrycget�get_acceleratorr)
r�rprrrsZ
menuEventDictr=r)ZmenubarItemrbr�ZaccelZitemNamerPr r r!�ApplyKeybindings_s<
$




zEditorWindow.ApplyKeybindingscCs|jstjddddd�|_dS)NrAr]z
num-spacesrCrD)r�rr}r�r2r r r!r��s
�z#EditorWindow.set_notabs_indentwidthcCs|t��}|jd}|�t�}||jkr8|�|jd|�|rn|��|D]$}|�|d�}|j	|d|d�qH||jd<dS)Nr
rUrr/)
rZGetAllExtraHelpSourcesListr�r�rrrr��"_EditorWindow__extra_help_callbackr0)r�Z	help_listZhelpmenuZhelpmenu_length�entryrVr r r!r�s


z$EditorWindow.reset_help_menu_entriescs|f�fdd�	}|S)Nc
s�|�d�stj�|�}tjdd�dkrrzt�|�Wq|tk
rn}ztj	dt
|��jd�W5d}~XYq|Xn
t�
|�dS)N)ZwwwZhttpr:r;r9r:)r[rhrirprrlr=r>rr�r�rFr?r@)�helpfilerAr2r r!�display_extra_help�s
�z>EditorWindow.__extra_help_callback.<locals>.display_extra_helpr )r�r{r|r r2r!Z__extra_help_callback�sz"EditorWindow.__extra_help_callbackc
s�g}|j}|r>tj�|�r>t|dddd��}|��}W5QRX|rptj�|�d}||krd|�|�|�d|�g�|D]*}d|ks�tj�|dd��sx��	|�qx�fd	d
�|D�}d}|dt
|��}|�rRz*t|dddd��}|�|�W5QRXWnVtk
�rP}z6t
|jd
d��s@d|j_tjdd|�d�|jd�W5d}~XYnX|jjD]Z}	|	j}
|
�dt�t|�D]8\}}|��}|	�|�}
|
j||d||
dd��qx�qZdS)N�r�utf_8r)r)�errorsrer�rccsg|]}|�kr|�qSr r )�.0ri�Z	bad_pathsr r!�
<listcomp>�sz9EditorWindow.update_recent_files_list.<locals>.<listcomp>Z1234567890ABCDEFGHIJK�w�recentfiles_messageFTzIDLE Warningz)Cannot save Recent Files list to disk.
  z
Select OK to continue.r:r�)rrYr	)ryrhrir�r@�	readlines�abspath�remover��appendr��
writelinesr>r
rrr�r�showwarningrFrurxrrr�	enumerate�rstrip�#_EditorWindow__recent_file_callbackr0)r��new_fileZrf_listrKZrf_list_fileriZulcharsZrf_file�err�instancer=�i�	file_name�callbackr r�r!r��s\�
�
�
�z%EditorWindow.update_recent_files_listcs|f�fdd�	}|S)Ncs�jj|d�dS)N)ZeditFile)r�r@)Z
fn_closurer2r r!�open_recent_file�sz=EditorWindow.__recent_file_callback.<locals>.open_recent_filer )r�r�r�r r2r!Z__recent_file_callback�sz#EditorWindow.__recent_file_callbackcCs�|��}|��}|r*|r*|d|t}n|r4|}n|r>|}nd}|pL|pL|}|��sfd|}d|}|j�|�|j�|�dS)Nz - �untitledz*%s*z*%s)�short_title�
long_title�_py_version�	get_savedruZwm_titleZwm_iconname)r�Zshort�longr;Ziconr r r!r��szEditorWindow.saved_change_hookcCs
|j��Sr�)r�r�r2r r r!r��szEditorWindow.get_savedcCs|j�|�dSr�)r��	set_saved)r��flagr r r!r��szEditorWindow.set_savedcCs|j��dSr�)r��
reset_undor2r r r!r��szEditorWindow.reset_undocCs|jj}|rtj�|�SdS)Nr�)r�r�rhrir�)r�r�r r r!r��szEditorWindow.short_titlecCs|jjp
dS)Nr>)r�r�r2r r r!r��szEditorWindow.long_titlecCs|��dSrM)rWr�r r r!r��sz EditorWindow.center_insert_eventr�cCsH|j}|��\}}|�|�}||}td||d�}|�t|��dS)NrUr<)rF�getwindowlinesr�maxrr)r��markrFru�botrIrHZnewtopr r r!rWs
zEditorWindow.centercCsN|j}|�d�}|�d�}||krF|��dkrFt|d�}||d}||fS)Nrz@0,65535rUrH)rFrZwinfo_heightrC)r�rFrur�rHr r r!r�s

zEditorWindow.getwindowlinescCs|j}tt|�|���Sr�)rFrCrr�)r�r�rFr r r!rszEditorWindow.getlinenocCs(|j��}t�d|�}ttt|����S)Nz(\d+)x(\d+)\+(-?\d+)\+(-?\d+))ruZwm_geometry�re�match�listr�rC�groups)r�Zgeom�mr r r!�get_geometrys
zEditorWindow.get_geometrycCs|��dSrM)r�r�r r r!r�szEditorWindow.close_eventcCsH|jrD|��s:|j��dkr&|j��|j��|j��|j��SdS)Nr4)r�r�rur�Z	deiconify�lowerZlift�	maybesaver2r r r!r�#s


zEditorWindow.maybesavecCs<z"|��}t|�dkr|��|WStk
r6YnXdS)N�cancel)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�rFrwr�ruZdestroyr^r2r r r!r�5s"



zEditorWindow._closecCsi|_|��dSr�)�
extensions�load_standard_extensionsr2r r r!r�IszEditorWindow.load_extensionscCs0t|j���D]}t|d�r|��qi|_dS)Nr�)r�r��valuesr�r�)r��insr r r!r�Ms

zEditorWindow.unload_extensionscCsD|��D]6}z|�|�Wqtdt|��t��YqXqdS)NzFailed to load extension)rn�load_extension�print�repr�	traceback�	print_exc)r�r@r r r!r�Ssz%EditorWindow.load_standard_extensionscCstjdd�S)NT)Zeditor_only)rZ
GetExtensionsr2r r r!rn[sz)EditorWindow.get_standard_extension_namesZZzDummyZzzdummyc		Cs:|j�||�}z>ztjd|td�}Wn"ttfk
rHt�|�}YnXWn tk
rltd|��YnXt||�}t	�
|�}t|d�r�|�|j
|�||�}||j|<|�r6|�|�|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: rv�-rcrUr�rcr�Z_event)�extfilesr��	importlib�
import_module�__package__�ImportError�	TypeErrorr�r
rror�rrvr�rrrFr�)	r�r@Zfname�mod�clsrpr�ZveventZ
methodnamer r r!r�bs4






zEditorWindow.load_extensioncCsF|dkr|jj}|j}||_|��D]\}}|r$|j|f|��q$dSr�)r*rlrFrprmr�)r�rprFrPrqr r r!r~szEditorWindow.apply_bindingsc	Cs�|dkr|jj}|dkr |jj}|j}|j}|D]�\}}|�|�}|sHq0|D]�}|s^|��qL|\}	}
|	dd�dk}|r�|	dd�}	t|	�\}}	t||
�}
||
fdd�}|r�|�	|
t
�}|j|	|||
|d�qL|j|	|||
d�qLq0dS)NrU�!cSs|�|�dSr�r,r.r r r!rY�sz(EditorWindow.fill_menus.<locals>.command)rr	rYru�variable)rr	rYru)
r*rvrlr�rFr�r�rrw�get_var_objZ
BooleanVarZadd_checkbuttonr0)r�rvrpr�rFZmnameZ	entrylistr=rzrr*Zcheckbuttonr	rurY�varr r r!r�s>

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

zEditorWindow.getvarcCs(|�||�}|r|�|�nt|��dSr�)r�r�r�)r�r@r��vartyper�r r r!�setvar�szEditorWindow.setvarcCs,|j�|�}|s(|r(||j�|j|<}|Sr�)rwr�rF)r�r@r�r�r r r!r��szEditorWindow.get_var_objcCs,|jr$|j�d|�p"d|j�|�kSdSdS)NZTODO�STRINGrU)r�rF�
tag_prevrangeZ	tag_names)r�Z
text_indexr r r!�is_char_in_string�s
�zEditorWindow.is_char_in_stringcCs>z"|j�d�}|j�d�}||fWStk
r8YdSXdS)Nr�r�)NNr5)r�r�r�r r r!�get_selection_indices�s
z"EditorWindow.get_selection_indicescCs|jdpt}t|�S)N�tabs)rF�TK_TABWIDTH_DEFAULTrC)r��currentr r r!�get_tk_tabwidth�szEditorWindow.get_tk_tabwidthc	CsB|j}|��|kr>|j�dd|dd|jd|�}|j|d�dS)Nr\r�z
-displayof�n)r�)rFr�r�r6ZmasterZ	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	kr�|�d�dS|j}t|�	|��}|d
|j
|j
}d}	||jkr�q�|dd�}|	d
}	t|�	|��}||ks�|dd	kr�q�q�|��|�d|	d�||k�r2|�
dd
||�|��dS)Nr�rNr�r>r�r�z	insert-1crc� 	rUrz
insert-%dcr�)rFr�rr�r�r�Zbellr�r��
expandtabsr�rzr�r�r�)
r�rPrFr�r��charsr�ZhaveZwantZ
ncharsdeletedr r r!r��s@


z"EditorWindow.smart_backspace_eventc
Cs�|j}|��\}}|��z�|r\|r\t|�t|�krD|j�|�W��S|�||�|�d|�|�	dd�}t
||j�\}}|t|�kr�|�
||j�n>|jr�d}n&t|�|j��}|j}	d|	||	}|�d|�|�d�W�dS|��XdS)Nr�r�r�r�rN)rFr�r�r��
index2liner�r�rr�r��get_line_indentr�r��reindent_tor�r�r�r�r�)
r�rPrFr�r��prefix�rawZ	effectiveZpadr�r r r!r�(s,
zEditorWindow.smart_indent_eventc	Cs�|j}|��\}}|���z�|r>|r>|�||�|�d|�|�dd�}dt|�}}||krv||dkrv|d7}qX||kr�|�	dd�W��DdS|d|�}d}|r�|ddkr�||j
kr�|dd�}|d7}q�|r�|�d	|d�|�d�dk�r|�d�q�|�	dd�t|�d��}	t
�|j|j�}
|j
�s�|jD]`}t|	|d�}t|�d
}
|�|
d�}|
�|�|
�|�|
��}|dk	�s�|dk�r<�q��q<|
�|�p�d�n@|�dd�}|�r�|d}
nd}
|�|
d�}|
�|�|
�d�|
��}|t
jk�r�|t
jk�rnn|t
jk�r,|�	d|�nT|t
jk�rH|�|
���n8|t
j k�r�|
�!�dk�rp|�	d|�n|�|
�"��nW�PdS|
�#�}|�	d|�|
�$��r�|�%|�n|�r�|
�&��r�|�'|�W�dS|�d�|��XdS)
Nr�r�rr�rUrerNrczinsert - %d charsrGZconsoler�)(rFr�r�r�r�rr�r�r�r�rzr�r�rZParserr�r�r�r�r�Zset_codeZfind_good_parse_start�_build_char_in_string_funcZset_lor�Zget_continuation_typeZC_NONEZC_STRING_FIRST_LINEZC_STRING_NEXT_LINESZ	C_BRACKETr�Zcompute_bracket_indentZC_BACKSLASHZget_num_lines_in_stmtZcompute_backslash_indentZget_base_indent_stringZis_block_openerr�Zis_block_closerr�)r�rPrFr�r�r�r�r��indent�lnor#�contextZstartatZstartatindexZrawtextZbodr}r�r r r!r�Ks�	




�






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�r[rFr r r!r��szEditorWindow.reindent_tocCsPt|j|j���\}}|r@|r@t||j�\}}t||j�\}}nd}}||S�Nr)�IndentSearcherrFr�rr�)r��openerZindentedr�ZindentsmallZindentlarger r r!r��szEditorWindow.guess_indentcCsN|jdkrdS|jjr&|j��d}n|j��d}|jdd|�d�d�dS)NZShowZHiderdrfz
 Line Numbers)r=r�r)r�Zis_shownZhide_sidebarZshow_sidebarr)r�rPZ
menu_labelr r r!r��s


�z&EditorWindow.toggle_line_numbers_event)NNNN)N)N)N)N)N)N)N)N)N)N)N)N)r�)r�)N)NN)N)N)T)N)�rO�
__module__�__qualname__Zidlelib.percolatorr$Zidlelib.colorizerr%r&Zidlelib.undor'Zidlelib.iomenur(r)rPr*Zidlelib.statusbarr+Zidlelib.autocompleter,Zidlelib.autoexpandr-Zidlelib.calltipr.Zidlelib.codecontextr/Zidlelib.sidebarr0Zidlelib.formatr1r2r3r4Zidlelib.parenmatchr5Zidlelib.squeezerr6Zidlelib.zoomheightr7r�getfilesystemencodingZfilesystemencodingrgr�r�r�r�r�r�r�r�rrr~r�rr�r�r%r�r'r&r3r1r7r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rLr�r�r�r�rXr�r^r_r�rarbr��string�
ascii_letters�digitsrfrir�rjrtrxr�rryr�r�r�r�r�r�r�r�r�rWr�rr�r�r�r�r�r�r�r�rnr�r�rrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r r r r!r#1s


+
�
%�









		

$
.


		�
	
%


	,#v
	r#cCstt|��Sr�)rCr)r�r r r!r�sr�z[ \t]*cCs$t�|�}|��t|���|��fSr�)�_line_indent_rer�rbr��groupr�)r�r�r�r r r!r�s
r�c@s8eZdZdd�Zdd�Zejejdfdd�Zdd	�Z	d
S)r�cCs(||_||_d|_|_d|_|_dSr�)rFr�r��finished�blkopenline�indentedline)r�rFr�r r r!r�szIndentSearcher.__init__cCsL|jr
dS|jd}|_t|�d}|j�|dd�r:dS|j�||d�S)Nr>rUrGz>=rbz lineend+1c)r�r�r�rFr�r�)r�r�r�r r r!�readlineszIndentSearcher.readline)�class�def�for�if�try�whilec		Cs>|jrn2||kr ||kr ||_n||kr:|jr:||_d|_dS)NrU)r�r�r�)	r�rE�token�startrbr��INDENT�NAMEZOPENERSr r r!�
tokeneater%szIndentSearcher.tokeneaterc	Cshtj}|jt_zDz$t�|j�}|D]}|j|�q"Wntjtfk
rNYnXW5|t_X|j|j	fSr�)
�tokenize�tabsizer��generate_tokensr�r��
TokenError�SyntaxErrorr�r�)r�Zsave_tabsize�tokensr�r r r!r1s
zIndentSearcher.runN)
rOr�r�r�r�rr�r�r�rr r r r!r�s
�
r�cCs6|�d�}|dkr.|d|�||dd�}||fS)NrcrrU)rF)�sr�r r r!rCs
r�[�]�/)ZbracketleftZbracketrightZslashcCs�|�|�}|rt��r"|dkr"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>rLrTrSr>rz-[a-z]\bcSs|����Sr�)r��upper�r�r r r!rQ\rRz!get_accelerator.<locals>.<lambda>z\b\w+\bcSst�|��|���Sr�)�keynamesr�r�rr r r!rQ]rRzKey-ZCancelz
Ctrl-BreakzControl-zCtrl-r��+z><r�r�r�)r�rZ	isCocoaTkr��sub)rpr*rqrr r r!rwRs
rwcCs4|j}|�ddd�|�ddd�|�ddd�dS)	NZtcl_wordBreakAfterza brr�Z
tcl_wordcharsz\wZtcl_nonwordcharsz\W)r�r6)rrr�r r r!�
fixwordbreakshsrcCs~|}t|�tjdd�r&tjd}nd}t�|d�t||d�}|j}d|d<td�D] }|�dd|t	|�d�qXdS)	NrU)rrr��
rH�r�z  re)
rr�argvrZsetupAppr#rFr�r�r�)r8rrr�rrFr�r r r!�_editor_windowqsr�__main__)rAzidlelib.idle_test.test_editorr<F)�	verbosity�exit)r)8�
importlib.abcr��importlib.utilrhrlr�r�rrr�r?�tkinterZtkinter.fontrZtkinter.ttkrrrZidlelib.configrrPrr	r
rrZidlelib.multicallr
rrrrZidlelib.treerrr�Zpython_versionr�rr"r#r��compiler�r�r�rrrwrrrOZunittestrAZidlelib.idle_test.htestrr r r r!�<module>sx
Z

4
�	


F1le Man4ger