python (3.11.7)

(root)/
lib/
python3.11/
idlelib/
__pycache__/
editor.cpython-311.opt-1.pyc

e
XddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlTddlm
Z
ddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddlm$Z$dZ%dej&zZ'ejdkZ(dZ)GddZ*dZ+ej,dZ-dZ.GddZ/d Z0d!d"d#d$Z1d%Z2d&Z3d'Z4e5d(kr'dd)l6m7Z7e7d*d+d,-dd.l8m9Z9e9e4dSdS)/N)*)Font)	Scrollbar)simpledialog)
messagebox)idleConf)configdialog)grep)help)
help_about)macosx)MultiCallCreator)pyparse)query)replace)search)wheel_event)
py_extensions)windowz (%s)darwinctj\}}}}}||}||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	candidatercfinalr)sysversion_info)majorminormicrolevelserialreleases      B/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/idlelib/editor.py_sphinx_versionr%&sw),)9&E5%G%zG=== 	'		eAh((((NceZdZddlmZddlmZmZddlm	Z	ddl
mZmZddl
mZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZmZmZmZddl m!Z!ddl"m#Z#e$j%Z&dZ'dZ(dZ)dZ*dxdZ+dydZ,dZ-dZ.dZ/dZ0dydZ1	gdZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9d gZ:d!Z;d"Z<d#Z=d$Z>dyd%Z?dyd&Z@dyd'ZAdyd(ZBd)ZCd*ZDd+ZEdyd,ZFdyd-ZGd.ZHd/ZId0ZJd1ZKd2ZLd3ZMd4ZNd5ZOd6ZPd7ZQd8ZRdyd9ZSdyd:ZTdyd;ZUd<ZVd=ZWd>ZXd?ZYd@ZZdAZ[dBZ\dCZ]e^j_e^j`zdDzZadEZbdFZcdGZddHZedIZfdJZgdKZhdLZidydMZjdNZkdOZldPZmdQZndRZodSZpdTZqdUZrdzdWZsdXZtdzdYZudZZvd[Zwd\Zxd]Zyd^Zzd_Z{d`Z|daZ}dbZ~dcddiZdeZdydfZd{dgZdhZdydiZdydjZdkZdlZdmZdnZd|doZdpZdqZdrZdsZdtZduZdvZdydwZdS)}EditorWindowr)
Percolator)ColorDelegatorcolor_config)
UndoDelegator)	IOBindingencoding)mainmenu)MultiStatusBar)AutoComplete)
AutoExpand)Calltip)CodeContext)LineNumbers)FormatParagraphFormatRegionIndentsRstrip)
ParenMatch)
ZoomHeightNTc!ddlm}tj%tjtjdd}tj	
drbddtjddzz}tjd	rd
}n	d}tj||dd}ntj	dddkrddl
}	d
}
dtjd}	|	|	j|}
n=#t"$r0	|	|	j|}
n#t"$rYnwxYwYnwxYwtj|
r|
}n:tj	dkr*tjtjd}tj|}tj|r6|t_tj	dkrdtjzt_n!dtjddzt_||_|p|j}||_t/||_t3j||jx|_}|r|j|_|j|j_ni|_i|j_t@j!o)tjt@j!d|_"d
|_#tI|x|_%}
tM|
dx|_'}tAj(dddd}ddd d|d!tAj(ddd"dd#}tStT|
fi|x|_+}|j+|j_,|-|.|j/d$|j0|j1d%|j2tgj4rR|1d%|j2|1d&|j5|1d'|j5n|1d(|j5|1d)tl|1d*tl|1d+tl|1d,|j7|1d-|j8|1d.|j9|1d/|j:|1d0|j;|1d1|j<|1d2|j=|1d3|j>|1d4|j?|1d5|j@|1d6d7|1d8|jA|1d9|jB|1d:|jC|1d;|jD|1d<|jE|1d=|jF|1d>|jG|1d?|jH|1d@|jI|1dA|jJ|1dB|jK|L|x|_M}|1dC|jN|1dD|jO|1dE|jP|1dF|jQ|1dG|jR|1dH|jS|T|}|1dI|jU|1dJ|jV|1dK|Wd|1dL|WdM|1dN|jX|1dO|jY|1dP|jZ|r||j|<|r
||j[|<|1dQ|j\|1dR|jj]|1dS|j^|1dT|j_|1dU|j`|a|
bttdMV|
edMdMW|
fdMdMW|jg|dX<|hdMdtY|jj|dZ<tAjk|jdd|d[<|hdMdMtY|l|mtAj(dd\d]d^}||_nd_|_o|jo|_p|qtt@d`s|j+dat@_s|tdb|_u|v|x|_w}|xx|_y}|z||j{|_{|j||_||}|j~||x|_}||jdc|_|dcd|_d|_d|_|rtj|rftj|sG||r1dd|_||}||n||dd|_||~|||jde}|rX|df}|dg}|dkr||dMz}||_t3j|jt,j|_t0j|_t0j|_|dhdi|djdkdldm|dndo|dpdq|drdqdsdt|||j}|1dh|j|1dj|j|1du|j|1dv||j|1dw||j||}|1dx|j|1dr|j||}|1dy|j|1dz|j|1d{|j|1d|||j||x|_}|1dn|j|1dp|j|1d}|j|1d~||j|jr;|||_|1d|jjn|ddd|jrc|||_tAj(dddd^r||1d|jdS|ddddS)Nr)
ScriptBindingDocz
index.htmllinuxzpython-docs-z%s.%s.%sz/var/www/html/python/z/var/www/html/python/index.htmlz/usr/share/doc/winzSoftware\Python\PythonCore\z\Help\Main Python Documentationrz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/)menuzrecent-files.lstvbar)namemainr(widthinttypetextnone
wordprocessorheight)rFpadxwraphighlightthicknessrHtabstylerPWM_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>>cdSNbreak)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>>)sidefillexpand)weightcommand)rowcolumnstickyyscrollcommandfontIndentz
use-spacesboolrblink_off_time
insertofftime)2ii@KLFTrendz<<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*ontextdisabledzline-numbers-defaultz<<toggle-line-numbers>>*ine*umbers)idlelib.runscriptr=r(help_urlospathjoinrbase_prefixplatformcountrisdirwinregwinver
QueryValueHKEY_CURRENT_USERFileNotFoundErrorHKEY_LOCAL_MACHINEisfilenormpathflistrootMenumenubarrListedTopleveltopvarstkinter_varsinversedict
instance_dictruserdirrecent_files_pathprompt_last_lineFrame
text_framerrE	GetOptionrTextrLfocused_widget
createmenubarapply_bindingsprotocolclosebindclose_eventr
isAquaTkright_menu_eventrhandle_winconfigcutcopypastecenter_insert_eventhelp_dialogpython_docsabout_dialog
config_dialogopen_module_event
select_allremove_selection
find_eventfind_again_eventfind_in_files_eventfind_selection_event
replace_eventgoto_line_eventsmart_backspace_eventnewline_and_indent_eventsmart_indent_eventr7fregionindent_region_eventdedent_region_eventcomment_region_eventuncomment_region_eventtabify_region_eventuntabify_region_eventr8toggle_tabs_eventchange_indentwidth_eventmove_at_edge_if_selection
del_word_leftdel_word_right
home_callbackdictnew_callbackclose_all_callbackopen_module_browseropen_path_browseropen_turtle_demoset_status_barpackLEFTBOTHrowconfigurecolumnconfigurehandle_yviewgridNSEWsetGetFont	focus_set	set_widthusetabstabwidthindentwidthset_notabs_indentwidthhasattrrmupdate_cursor_blinknum_context_linesr)perr,undoinsertfilterundo_block_startundo_block_stopset_saved_change_hooksaved_change_hookr-ioset_filename_change_hookfilename_change_hook	good_loadset_indentation_paramscolorcode_contextline_numbersexistsloadfileispythonsourceset_filenameResetColorizerupdate_recent_files_listload_extensionsmenudictgetindex
add_separator	wmenu_endregister_callbackpostwindowsmenur
askintegerraskyesno	showerror	event_addr1user_input_insert_tagsautocomplete_eventtry_open_completions_eventforce_open_completions_eventr2expand_word_eventr6format_paragraph_eventr:flash_paren_eventparen_closed_eventcheck_module_eventrun_module_eventrun_custom_eventr9	do_rstripr3ctiptry_open_calltip_eventrefresh_calltip_eventforce_open_calltip_eventr;zoom_height_eventallow_code_contextr4toggle_code_context_eventupdate_menu_stateallow_line_numbersr5toggle_line_numbers_event)selfrfilenamekeyrr=dochomepyverbasepathr~docfileKEYrrrErHtext_optionsrLrindents	usespacesrrr	is_py_srcrDrpautocomplete
parenmatch
scriptbindingr	s                               r$__init__zEditorWindow.__init__Js333333 (w||COULIIG|!!'**
L&c6Frr6J)JJ7==!899@?GG0H gll8U+0,@@GGbqb!U**


;cj;;;$//0H#NNGG("("3"3F4M47#9#9,	7>>'**&%G))',,sJLLg&&w//Gw~~g&&
A(/%<8++,58M,ML))I+.+;BQB+?*@%
!uz	Dzz.t$,GGGG3	( %
D&+%6DH"" "D%'DH"!)!1"6bgll "47676!#',Szz1*$Zf====	D"6>7OOO&'+",uFFF		2+D11*MMMMM	D"&),dj999

($*:;;;?
	3II($*:;;;
II*4+@AAAIIeT23333
IIeD1222		.+...		,,,,		,,,,		-!6777		)TX&&&		*di(((		+tz***		%t'?@@@		*d.///		#T%5666		"D$5666		*D,>???		#T%;<<<		"$9$9:::		"DO444		($*?@@@		*do...		"D$9:::		%t'?@@@		&(ABBB		-!3444		/4#7888		'(BCCC		*4+HIII		$T%<===!%!2!24!8!88w		%w'BCCC		%w'BCCC		&(DEEE		('*HIII		%w'BCCC		')FGGG,,t$$		#W%>???		*G,LMMM		(D::1==>>>		)T;;A>>???		%t'9:::		&(;<<<		)4+=>>>	E&)Ed#
'"&
3II+T->???II-tz/LMMMII.0HIIIII-t/EFFFII,d.CDDDTQ777!,,,""1Q"///+Y		a$	///!%
'	6>JJV		a$	///&vx'3&BBB	$}
 =##%%%x!122	A&*i&@H#  """"2...3--///	D $ 5#3""4#9:::~~d+++"
##D$=>>>##E***
  	&w~~h''
&

h0G0G
&;;x((;%)DN $ 3 3H = =I//	:::)))!%   %%'''}  **	;**U##C{axx""$$$Ag DN$T%9:::'1"+
#-	
);77713H+-E	G	G	G-/GHHH,.GHHH)+D24M	O	O	O
((t/JKK		$l&EFFF		,9	;	;	;		.;	=	=	=		#T__T%:%:%LMMM		(&&t,,C	E	E	E__T**
		#Z%ABBB		$j&CDDD%
d++
		$m&FGGG		"M$BCCC		"M$BCCC		/4;;t#4#4#>???<<---	D		($*EFFF		')CDDD		*D,IJJJ		#T__T%:%:%LMMM"	I $ 0 0 6 6DII/'A
C
C
C
C
""9mZHHH"	I $ 0 0 6 6D!&."8vGGG
1..000II/1OPPPPP""9mZHHHHHs6/D
ED21E2
D?<E>D??EEc.|dSN)rrr\s  r$rzEditorWindow.handle_winconfiglsr&c	h|j}tt|jj|d|dg}|d|zz
}t||dd}||z|_	dS)NborderrQrCrj)rj0)
rLsummaptkgetintcgetwinfo_widthrmeasurerH)rrL
inner_paddingpixel_widthzero_char_widths     r$rzEditorWindow.set_widthosyC81D1D1561B1B1DEEFF
&&((1}+<<
DIIf--...66s;;	 O3


r&cr|j\}}|j|dSrY)rdefaultfilenamernew)rr\dirnamebasenames    r$rzEditorWindow.new_callback|s3 G3355
wwr&c|jdzdkr
|jdkrdS|jdry|jdddr]|jdddrAt|jddd	}nU|jdd}tt|D]}||d
vrnt|}t|jddd	}||krd}dt|zd
z}|jd	zdkr|jdddnE|jds|jddn|j|jdd|jdr|jddn|jdd|j|}|jd}|j|d|r||}}|jddd|j
d|||jd||jddS)NrHomeiomark<=zinsert lineendinsert linestart.r`) 	insertzinsert linestart+csel1.0rp	sel.first	my_anchor<sel.last>rZ)statekeysymrLrcomparerIsplitrrangelenstr
tag_removemark_settag_addsee)rr\insertptlinelineatdestfirstlasts        r$rzEditorWindow.home_callbacksK!O!!elf&<&<49??8$$	#9Xt-=>>	#9/x@@	#49??844::3??BCCHH9==!35EFFD!#d)),,
#
#>33E4TTY__X..44S99!<==vH"3x==04KMaI  u55559??;//
@	"";99999$$TY__[%A%A3%)Y__X%>%>@@@I&&{K@@@@I&&{J???IOOD))E9??;//Dy  s400
(!%dI  u555IeUD111	8T***	

hwr&c||j|_t|jddd}tjdkr"|jddt|jdd	t|jd
dt|jtt|tt|jd
|j
|jd
dd|j|j
dS)Nr`grey75)rPborderwidth
backgroundr	_padding1z    )rargzCol: ?rVzLn: ?)rarbz<<set-line-and-column>>z<KeyRelease>z<ButtonRelease>)r0r
status_barrrr{	set_labelRIGHTrBOTTOMXrLrset_line_and_columnr
after_idle)rseps  r$rzEditorWindow.set_status_bars$--dh77DHQA(KKK<8##
O%%k6%FFF!!(H5!AAA!!&'!>>>&q111f1%%%	0$2JKKK	5*,=	?	?	?	T566666r&c|jtd\}}|jdd|z|jdd|zdS)Nr>rgzCol: %srVzLn: %s)rLrINSERTrMr`ra)rr\rVrgs    r$rez EditorWindow.set_line_and_columnsfyv..44S99f!!(I,>???!!&(T/:::::r&))file_File)edit_Edit)formatF_ormat)run_Run)rr_Options)r_Window)r_Helpc|j}ix|_}|jD][\}}t|\}}t	||dd}t||d|x||<}||||\tjr.t|ddx|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)rFtearoffpostcommand)labelrD	underlineapple)rFrwapplicationIDLE)ryrDrwrjr@zRecent Files)ryrzrDr)rr
menu_specsprepstrgetattrradd_cascader

isCarbonTk
fill_menusrecent_files_menuinsert_cascaderENDbase_helpmenu_lengthreset_help_menu_entries)rmbarrrFryrzrxrDs        r$rzEditorWindow.createmenubars |#%%
?	J	JKD%&u~~Iu!$4(B(B(BDIIK$(D!5@%B%B%B
BHTNT5tyIIII	6-1$W:;.=.=.=
=H]#d6555!%dlA!>!>!>
f,,Qn78262H	-	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.
        rrpNrqr`)rrrdeleteradd_windows_to_menu)rrDrps   r$rzEditorWindow.postwindowsmenusj
}X&jj;CKKq(#..."4(((((r&cN|j|}|||dS)z$Update label for menu item at index.)ryNrentryconfig)rrDrrymenuitems     r$update_menu_labelzEditorWindow.update_menu_label-=&U%00000r&cN|j|}|||dS)z$Update state for menu item at index.rJNr)rrDrrJrs     r$rzEditorWindow.update_menu_staterr&c|dkrVt|d}t|d|z|dz
}d}|df}|jj|g|RdS)zHandle scrollbar.movetorrp@0,0scrollunitsrZ)floatround	getlinenorLyview)rr\argsfractionliness     r$rzEditorWindow.handle_yviews~HT!W~~H4>>%008;<<^^F++,EE7#D	%%%%%wr&c|j}|d|jd|j}	|dd|o||dd}n#t
$rd}YnwxYw|s-|ddd	|d
||js|	|j}||_
tjdddk}|r|
d
|jD]L}	|\}}	}
n#t$rYwxYw|
t!||
}|||M||j|j|r|j
ddS)N@,rEr<rHFrCrDrprAr@rAarrow)cursorribeamrZ)rLrxyrLTclErrorrQrRrmenu
make_rmenur\rr{configrmenu_specs
ValueErrorrentryconfiguretk_popupx_rooty_root)rr\rLnewdexin_selectionriswinitemry	eventnameverify_staterJs            r$rzEditorWindow.right_menu_event(sy333%'3344	! LLdFCCC<<zBB
L	!	!	! LLL	!	,OOE5%000MM(F+++z	OO

RaR E)	(KKwK'''$		5		5D
15.y,,



#/GD,//11E  e 4444
u|U\222	-IG,,,ws#.AA,+A,D
DD)CloserVNct|jd}|jD]K}|d|d}}|#|j|fd}|||7|L||_dS)Nrr~r`c0||dSr$event_generaterLrs  r$rez(EditorWindow.make_rmenu.<locals>.commandUs''	22222r&ryre)rrLradd_commandrr)rrrryrres      r$rzEditorWindow.make_rmenuPsTY***$	&	&D#AwQ9E !%i3333!!w!????##%%%%


r&c*|Sr$)rmenu_check_copyrs r$rmenu_check_cutzEditorWindow.rmenu_check_cut\s$$&&&r&cf	|jd}|rdndS#t$rYdSwxYw)NrEnormalrsrLrr)rindxs  r$rzEditorWindow.rmenu_check_copy_sO	49??;//D $3883			::	s"
00cv	|jjd|jddS#t$rYdSwxYw)Nztk::GetSelection	CLIPBOARDrrs)rLr+callrrs r$rmenu_check_pastezEditorWindow.rmenu_check_pastegsQ	IL0$)[III8			::	s&*
88c8tj|jdS)zHandle Help 'About IDLE' event.rZ)rAboutDialogrr%s  r$rzEditorWindow.about_dialogos	tx(((wr&c:tj|jddS)z&Handle Options 'Configure IDLE' event.SettingsrZ)r	ConfigDialogrr%s  r$rzEditorWindow.config_dialogus	!$(:666wr&cZ|jr|j}n|j}tj|dS)zHandle Help 'IDLE Help' event.rZ)rrr
show_idlehelp)rr\parents   r$rzEditorWindow.help_dialog{s49	YFFXF6"""wr&ctjdddkr[	tj|jnY#t
$r3}t
jdt||j	Yd}~n!d}~wwxYwtj|jdS)Nr@rADocument Start FailuretitlemessagerrZ)rr{rw	startfilervOSErrorrrrPrL
webbrowseropen)rr\whys   r$rzEditorWindow.python_docss<u$$
8T]++++
8
8
8$+CHHTY888888888
8
ODM***ws4
A1)A,,A1c:|jddS)Nz<<Cut>>rZrLrr%s  r$rzEditorWindow.cuts	  +++wr&cr|jdsdS|jddS)NrCz<<Copy>>rZ)rL
tag_rangesrr%s  r$rzEditorWindow.copys:y##E**	4	  ,,,wr&cn|jd|jddS)Nz	<<Paste>>rArZ)rLrrTr%s  r$rzEditorWindow.pastes1	  ---	

hwr&c|jddd|jdd|jddS)NrCrDzend-1crArZ)rLrSrRrTr%s  r$rzEditorWindow.select_allsM	%111	8U+++	

hwr&cr|jddd|jddS)NrCrDrprArZ)rLrQrTr%s  r$rzEditorWindow.remove_selections5	UE5111	

hwr&cR|jj|jjdfd}|S)zCursor 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	dddS#t$rYdSwxYwdS)NrMrrErA)rJr)r\
edge_indexedges_tableself_text_indexself_text_mark_sets r$move_at_edgez<EditorWindow.move_at_edge_if_selection.<locals>.move_at_edgesqaA%%#OK000&&xZ1HIIIIIDD	&%s0
>>)rLrrR)rrrrrrs ` @@@r$rz&EditorWindow.move_at_edge_if_selectionsQ)/!Y/5								r&c:|jddS)Nz
<Meta-Delete>rZrr%s  r$rzEditorWindow.del_word_lefts	  111wr&c:|jddS)Nz<Meta-d>rZrr%s  r$rzEditorWindow.del_word_rights	  ,,,wr&c8tj|jdSrY)rfindrLr%s  r$rzEditorWindow.find_eventsDIwr&c8tj|jdSrY)r
find_againrLr%s  r$rzEditorWindow.find_again_events$)$$$wr&c8tj|jdSrY)rfind_selectionrLr%s  r$rz!EditorWindow.find_selection_eventsdi(((wr&cPtj|j|j|jdSrY)r
rLrrr%s  r$rz EditorWindow.find_in_files_events!	$)TWdj111wr&c8tj|jdSrY)rrLr%s  r$rzEditorWindow.replace_events	"""wr&c|j}tj|ddj}|Y|ddd|d|d|d|dS)	Nz
Go To Linez/Enter a positive integer
('big' = end of file):rCrDrprA.0rZ)rLrGotoresultrQrRrTre)rr\rLlinenos    r$rzEditorWindow.goto_line_eventsyl)		
OOE5%000MM(vMMM222HHX$$&&&wr&cF	|jdd}n#t$rd}YnwxYwt	j|jdd|j}|<|jr|j|n|j	
||S)zGet 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.
        rErHrBzOpen ModulezAEnter the name of a Python module
to search on sys.path and open:)rLrstriprr
ModuleNamerrrrr)rrF	file_paths   r$open_modulezEditorWindow.open_modules	9==j99??AADD			DDD	$	=2			
 z
,
	****  +++s-0??c.|dSrY)rr%s  r$rzEditorWindow.open_module_eventswr&c|jj}|jjdkr|s|}|dSddlm}||j|dS)NPyShellEditorWindowrZr)browser)	rr	__class____name__ridlelibr
ModuleBrowserr)rr\rrs    r$rz EditorWindow.open_module_browsersq7#'+@@@A''))Hw######di222wr&cFddlm}||jdS)Nr)pathbrowserrZ)rrPathBrowserr)rr\rs   r$rzEditorWindow.open_path_browsers/''''''	***wr&cZddl}tjddg}||ddS)Nrz-cz,from turtledemo.__main__ import main; main()F)shellrZ)
subprocessr
executablePopen)rr\rcmds    r$rzEditorWindow.open_turtle_demos@~=?	E***wr&c|r|dkrn|jdd|z|jddd|jddd|dSdSdS)NrrAz%d.0rCrDrpz
insert +1l)rLrRrQrScenter)rrs  r$gotolinezEditorWindow.gotolines}&1**Ix&999I  u555IeX|<<<KKMMMMM	**r&c~|rtj|rdStjtj|\}}tj|tvrdS|jdd}|	dod|vS)NTrDz1.0 lineendz#!python)
rwrxr}splitextr7normcaserrLr
startswith)rrbaseextrVs     r$rzEditorWindow.ispythonsource%s	27==22	4G$$RW%5%5h%?%?@@	c
7C  M114y}}UM22t$$9T)99r&cZ|jr#|j|d|_dSdSr$)runregister_maybe_terminaters r$
close_hookzEditorWindow.close_hook.s7:	J11$777DJJJ		r&c||_dSr$)r)rrs  r$set_close_hookzEditorWindow.set_close_hook3s
$r&c|jr|j|||j||dSr$)rfilename_changed_editrrupdate_windowlist_registryrrs r$rz!EditorWindow.filename_change_hook6sb:	3J,,T222   ++D111r&c|jrdS||jjr||_|jr(|j|j|jdSdS)N)filterafter)rrrrr*rinsertfilterafterrrs r$
_addcolorizerzEditorWindow._addcolorizer=s{:	Ftw/00	/,,..DJ:	KH&&dj	&JJJJJ	K	Kr&c|jsdS|j|j|jd|_dSr$)rremovecolorsrremovefilterrs r$_rmcolorizerzEditorWindow._rmcolorizerFsHz	F
!!!dj)))


r&c||t|j|j|j|j|jdSdS)zUpdate the color themeN)	r-r)r(r+rLrupdate_highlight_colorsr
update_colorsrs r$rzEditorWindow.ResetColorizerMs	
!!$),,,(55777(++-----)(r&_cb|d|||}|r#||jvr|d|dz|d||kr|d|n|d|dz||dS)NERRORz
 wordstart
rAz+1c)rSr
IDENTCHARSrRrT)rrLposchars    r$colorize_syntax_errorz"EditorWindow.colorize_syntax_error\sWc"""xx}}	;DDO++LL#"4c:::488C==  MM(C((((MM(C%K000




r&cztjdddd}|sd|jd<dStj|jd<dS)	z&Update the cursor blink configuration.rGr(zcursor-blinkrlrJrrnN)rrrLrm)rcursorblinks  r$rz EditorWindow.update_cursor_blinkgsW(VEEE	A)*DIo&&&*2)@DIo&&&r&c|j|j|j|jtj|jdd}||jd<|dS)z.Update the text widgets' font if it is changedNrGr(rj)rupdate_fontrrrrrLr)rnew_fonts  r$	ResetFontzEditorWindow.ResetFontqsz())+++())+++#DIv~FF$	&r&cRtjx|j_}|D]\}}|jj|g|R|D]E}tj|}|r-|D]\}}|jj|g|RFdS)zgRemove the virtual, configurable keybindings.

        Leaves the default Tk Text keybindings.
        N)	rGetCurrentKeySetr/default_keydefsitemsrLevent_deleteget_standard_extension_namesGetExtensionBindings)rkeydefsr\keylist
extensionNamexkeydefss      r$RemoveKeybindingszEditorWindow.RemoveKeybindingss3;2K2M2MM
%%mmoo	4	4NE7"DI"53733333!>>@@	<	<M4]CCH
<&.nn&6&6<<NE7*DI*5;7;;;;;		<	<r&cVtjx|j_}||D]-}tj|}|r||.i}|jjD]J}i||d<|dD]4}|r0|d||dt|dd<5K|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.
        rr`NreacceleratorryrB)rL)rr@r/rArrDrEmenudefsrrrrrNrK	entrycgetget_acceleratorr)
rrFrHrI
menuEventDictrDrmenubarItemrpraccelitemNamer\s
             r$ApplyKeybindingszEditorWindow.ApplyKeybindingss3;2K2M2MM
%!>>@@	.	.M4]CCH
.##H---
M*	J	JD%'M$q'"Q
J
JJBFq'M$q'*747+;+;A+>?
J =	G	GK=-D**S//C{1HCq#
G
G99U##y00 NN5-@@EG#'>>%#A#A "&-77'=+EEE(5k(B8(L G$3GU$C$CE ,,U,FFF
G	G	Gr&cR|jstjdddd|_dSdS)zCUpdate the indentwidth if changed and not using tabs in this windowrGrkz
num-spacesrIrJN)rrrrrs r$rz#EditorWindow.set_notabs_indentwidthsA|	>'1&(<7< > > >D	>	>r&ctj}|jd}|t}||jkr||jdz||rQ||D]:}||d}|	|d|;||jd<dS)z4Update the additional help entries on the Help menu.rr`rrN)
rGetAllExtraHelpSourcesListrrrrrr_extra_help_callbackr)r	help_listhelpmenuhelpmenu_lengthentryrs      r$rz$EditorWindow.reset_help_menu_entriess799	=("..--T666OOT6:_MMM	B""$$$"
B
B//a99$$58S$AAAA (
fr&c|ffd	}|S)z9Return a callback that loads resource (file or web page).cx|dstj|}tjdddkrX	tj|dS#t$r4}tj	dt|jYd}~dSd}~wwxYwtj
|dS)N)wwwhttpr@rArr)rrwrxrrr{rrrrrPrLrr)helpfilerrs  r$display_extra_helpz=EditorWindow._extra_help_callback.<locals>.display_extra_helps&&77
67++H55|BQB5((<L*****<<<(/G #C<<<<<<<<<<<)))))sA%%
B#/)BB#r[)rresourcerbs`  r$rXz!EditorWindow._extra_help_callbacks,(0
	*
	*
	*
	*
	*
	*"!r&cg}|j}|r]tj|r>t	|dd5}|}dddn#1swxYwY|rQtj|dz}||vr|||d|g|D]B}d|vs'tj|dds	|Cfd	|D}d
}|dt|}|r	t	|ddd5}||dddn#1swxYwYnY#t$rL}t|jdd
s,d|j_t!jdd|d|jYd}~nd}~wwxYw|jjD]}	|	j}
|
dt.t1|D]R\}}|}|	|}
|
||dz|z|
dSdS)z/Load and update the recent files list and menusutf_8r)r.errorsNr4rrqcg|]}|v|	Sr[r[).0rx	bad_pathss  r$
<listcomp>z9EditorWindow.update_recent_files_list.<locals>.<listcomp>s#EEEDt9/D/D4/D/D/Dr&1234567890ABCDEFGHIJKwrecentfiles_messageFTzIDLE Warningz)Cannot save Recent Files list to disk.
  z
Select OK to continue.rr?)ryrerz)rrwrxrr	readlinesabspathremoverAappendrO
writelinesrrrrnrshowwarningrLrrrrr	enumeraterstrip#_EditorWindow__recent_file_callbackr)rnew_filerf_listrrf_list_filerxulcharsrf_fileerrinstancerDi	file_namecallbackrjs              @r$rz%EditorWindow.update_recent_files_listsL*		3	22	3i&y:::
3=I&0022
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3	(wx0047H7""x(((NN1h'''		'	'Dt||27>>$qt*#=#=|  &&&EEEEGEEE)!CLL.)	*
*)S#*9>>>0AH&&w///000000000000000
*
*
*ty*?GG*48DI1*!9%(!9!9!9 $y	****
*.	.	.H-DKK3 )' 2 2
.
.9%,,..	#::9EE  wqzC'7)'C)1+,!....
.	.	.sNAA#&A#.E/E#E/#E''E/*E'+E//
G9AGGc|ffd	}|S)Nc>j|dS)N)editFile)rr)
fn_closurers r$open_recent_filez=EditorWindow.__recent_file_callback.<locals>.open_recent_filesGLL*L-----r&r[)rrrs`  r$__recent_file_callbackz#EditorWindow.__recent_file_callbacks*(1	.	.	.	.	.	.r&cH|}|}|r|r|dz|ztz}n|r|}n|r|}nd}|p|p|}|s
d|z}d|z}|j||j|dS)Nz - untitledz*%s*z*%s)short_title
long_title_py_version	get_savedrwm_titlewm_iconname)rshortlongricons     r$rzEditorWindow.saved_change_hooks  ""  	T	EMD(;6EE
	EE
	EEE%%~~	 UNE4<D%   T"""""r&c4|jSr$)rrrs r$rzEditorWindow.get_saved%sy""$$$r&c:|j|dSr$)r	set_saved)rflags  r$rzEditorWindow.set_saved(s	D!!!!!r&c8|jdSr$)r
reset_undors r$rzEditorWindow.reset_undo+s	r&c`|jj}|rtj|ndS)Nr)rrrwrxr7)rrs  r$rzEditorWindow.short_title.s,7#-5Erw))):Er&c|jjpdS)NrB)rrrs r$rzEditorWindow.long_title2sw%2%r&c.|dSrY)rr%s  r$rz EditorWindow.center_insert_event5s


wr&rAc|j}|\}}||}||z
}td||dzz
}|t|dS)Nr`rC)rLgetwindowlinesrmaxrr)rmarkrLrbotrrPnewtops        r$rzEditorWindow.center9sny&&((S%%sQ*++

5==!!!!!r&c|j}|d}|d}||kr5|dkrt|d}||zdz
}||fS)Nrz@0,65535r`rP)rLrwinfo_heightrI)rrLrrrPs     r$rzEditorWindow.getwindowlinesAsrynnV$$nnZ((#::$++--22h((F,"CCxr&cn|j}tt||Sr$)rLrIrr)rrrLs   r$rzEditorWindow.getlinenoKs+y5D))**+++r&c|j}tjd|}t	tt|S)zReturn (width, height, x, y)z(\d+)x(\d+)\+(-?\d+)\+(-?\d+))rwm_geometryrematchlistr*rIgroups)rgeomms   r$get_geometryzEditorWindow.get_geometryOsGx##%%H5t<<CQXXZZ(()))r&c.|dSrY)rr%s  r$rzEditorWindow.close_eventUs

wr&c>|jr|sh|jdkr|j|j|j|jSdS)Nr)rrrrJ	deiconifylowerlift	maybesavers r$rzEditorWindow.maybesaveYs7	'>>##
 8>>##X--H&&(((   

7$$&&&
	'	'r&c	|}t|dkr||S#t$rYdSwxYw)Ncancel)rrP_closeAttributeError)rreplys  r$rzEditorWindow.closebs[	NN$$E5zzX%%


L			DD	s<?
A
A
c|jjr ||jjtj|j||jd|_d|_|j	r |j	d|_	d|_
d|_|jd|_|j
|jr|dSdS)N)rx)rrrrunregister_callbackrunload_extensionsrrrrLrrrdestroyrrs r$rzEditorWindow._closeks7	E))473C)DDD"4#7888   

	:	JDJ	 ?	OO		r&c<i|_|dSr$)
extensionsload_standard_extensionsrs r$rzEditorWindow.load_extensionss!%%'''''r&ct|jD]&}t|dr|'i|_dS)Nr)rrvaluesrr)rinss  r$rzEditorWindow.unload_extensionssR..0011		CsG$$
		r&c|D]O}	||#tdt|t	jYMxYwdS)NzFailed to load extension)rDload_extensionprintrepr	traceback	print_exc)rrFs  r$rz%EditorWindow.load_standard_extensionssx5577	&	&D
&##D))))
&0$t**===#%%%%%	&	&s	.2A"c,tjdS)NT)editor_only)r
GetExtensionsrs r$rDz)EditorWindow.get_standard_extension_namess%$7777r&ZzDummyzzdummycX|j||}		tjd|zt}n+#t
tf$rtj|}YnwxYwn#t
$rtd|wxYwt||}tj
|}t|dr||j
|||}||j|<|r|||D]}|dd}|dddkr|dd}|dddk|d	dd
kr|dd	}|d	dd
k|dz}t||r)|j|t||dSdS)Nr>)packagez
Failed to import extension: rM-r1r`rGrqrI_event)extfilesr	importlib
import_module__package__ImportError	TypeErrorrrrrErrrMrrrrLr)	rrFfnamemodclsrFrvevent
methodnames	         r$rzEditorWindow.load_extensions
!!$--	
5-cEk;OOO+
5
5
5-e44
5			2D999	c4  /553
##	3OOCL'222c$ii #
	E(((!
E
E#^^C55
 !n++!+ABBJ!!n++ o,,!+CRCJ!o,,'(2
3
++EINN673
+C+CDDD
	E
	E
E
Es&=A)%A%"A)$A%%A))Bc||jj}|j}||_|D]\}}|r|j|g|RdS)z"Add events with keys to self.text.N)r/rArLrFrBr)rrFrLr\rGs     r$rzEditorWindow.apply_bindingssg?m3Gy%mmoo	0	0NE7
0u/w////	0	0r&c	||jj}||jj}|j}|j}|D]\}}||}|s|D]}|||\}	}
|	dddk}|r
|	dd}	t|	\}}	t||
}
||
fd}|r6|	|
t}||	|||
|||	|||
dS)zFill in dropdown menus used by this window.

        Items whose name begins with '!' become checkbuttons.
        Other names indicate commands.  None becomes a separator.
        Nr`!c0||dSr$rrs  r$rez(EditorWindow.fill_menus.<locals>.commands++I66666r&)ryrzrerLvariable)ryrzrerL)
r/rMrArrLrrrrOget_var_obj
BooleanVaradd_checkbuttonr)rrMrFrrLmname	entrylistrDr\ryrcheckbuttonrzrLrevars                r$rzEditorWindow.fill_menuss}-H?m3G=y (	B	BE9<<&&D
"
B
B=&&((((',$E9#(!9#3K"* %abb	'.u~~$Iu"1'9"E"EK%)Y7777"B"..y*EE,,5I$+%(-****((u	185@)BBBB%
B		B	Br&cz||}|r|}|St|r$)rr	NameError)rrFrvalues    r$getvarzEditorWindow.getvars;t$$	"GGIIELD//!r&c~|||}|r||dSt|r$)rrr)rrFrvartypers     r$setvarzEditorWindow.setvars>tW--	"GGENNNNND//!r&cv|j|}|s|r||jx|j|<}|S)z:Return a tkinter variable instance for the event.
        )rrrL)rrrrs    r$rzEditorWindow.get_var_objsN##I..	Dw	D181C1CCDi(3
r&c|jr7|jd|pd|j|vSdS)NTODOSTRINGr`)rrL
tag_prevrange	tag_names)r
text_indexs  r$is_char_in_stringzEditorWindow.is_char_in_stringsL:	9**6:>>?ty22:>>>
?1r&c	|jd}|jd}||fS#t$rYdSwxYw)NrErHNNr)rrYrZs   r$get_selection_indicesz"EditorWindow.get_selection_indicessY	IOOK00E9??:..D$;			::	s7:
AAcH|jdpt}t|S)Ntabs)rLTK_TABWIDTH_DEFAULTrI)rcurrents  r$get_tk_tabwidthzEditorWindow.get_tk_tabwidths )F#:':7||r&c	|j}||krE|jdd|dd|jd|z}||dSdS)Nrjr/z
-displayofn)r)rLrr+rmaster	configure)rnewtabwidthrLpixelss    r$set_tk_tabwidthzEditorWindow.set_tk_tabwidth"sry!![00W\\&)T&\"."%"355F
NNN'''''10r&c|rD|rB|}d|cxkrdkr
nn||_|j|jkrd|_||jdS)NrCrF)guess_indentrrrr)rrguessrs    r$rz#EditorWindow.set_indentation_params-sv	%	%!!##AA{{{{{{{{{#$ 4=00$T]+++++r&c|j}|\}}|r0|r.||||d|dS|dd}|dkrC|dddr|dn|dS|dd	vr|ddS|j}t|	|}|d
z
|j
z|j
z}d}		|dd}|	d
z}	t|	|}||ks
|dd	vrnC||d
|	zd||kr"|dd||z
z|j
|dS)NrArZr=rBrIrDz	insert-1crq 	r`rTz
insert-%dcr?)rLrrrRrrLbellrrO
expandtabsrrrArr)
rr\rLrYrZcharsrhavewant
ncharsdeleteds
          r$rz"EditorWindow.smart_backspace_event6sy0022t	T	KKt$$$MM(E***7+X66B;;||Hc511
K((((		7"IU""KK$$$7=5##H--..d..$2BB
	#2#JE)A-Mu''1122Dt||uRy55		
L=0(;;;$;;KK#"53
5
5
5wr&cj|j}|\}}|	|r||rzt|t|kr.|j||S||||d||	dd}t||j\}}|t|kr|
||jzn_|jrd}n9t||j}|j}	d|	||	zz
z}|d||j|d	|dS#|wxYw)NrAr=r@r?rZ)rLrr
index2linerrrrrRrget_line_indentrrOreindent_torrr
rArrT)
rr\rLrYrZprefixraw	effectivepadrs
          r$rzEditorWindow.smart_indent_eventasy0022t	#
/
/e$$
4(8(888<;;EBB(
  """"'E4(((

h...XX0(;;F,VT]CCNCc&kk!!  T-=!=>>>><4CC #F$5$5dm$D$D E EI(AY]!23CHc4+FGGGHHX  """""D  """"s=FC?FF2c
|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|ddvr,|d|ddv,|dd|jt|d}	tj|j|j}
|js|jD]}t'|	|z
d}t)|dz}
||
d}|
||
||
}||dkrn|
|pdnc|dd}|r	|d}
nd
}
||
d}|
||
d|
}|tjkr|tjkrn|tjkr|d||jn|tjkr(||
 nm|tj!kr]|
"dkr|d||jn(||
#		|	d|
dS|
$}|d||j|
%r|&|n+|r)|
'r|(|	|	d|
dS#|	d|
wxYw)aInsert 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.
        rAr=rrr`r4rZNrqzinsert - %d charsrconsolerD))rLrrrrRrrOrArrTrrrrParserrrrrrrset_codefind_good_parse_start_build_char_in_string_funcset_lorget_continuation_typeC_NONEC_STRING_FIRST_LINEC_STRING_NEXT_LINES	C_BRACKETrcompute_bracket_indentC_BACKSLASHget_num_lines_in_stmtcompute_backslash_indentget_base_indent_stringis_block_openerris_block_closerr)rr\rLrYrZrVrrindentlnorcontextstartatstartatindexrawtextbodrrBs                  r$rz%EditorWindow.newline_and_indent_eventsjy0022te	#
/
/E4(((

h...88.99Dc$iiqAa%%DGu,,Qa%%DGu,,Avv. 7999j
HHX  """""k"1"XFA
48u,,CRCyQ
48u,,
?/!3X>>>((8$$--H%%%((8$$--
KK$(CDDDTZZ1122Ct/??A(
#5G!#-33G#'==4#7L"hh|X>>GJJw'''11 ;;LIIKKC'Q,,+7""""&&y(;;)#$Q4LL#(L((<::

7###''))AGN""333'555KK&$2MNNNN'+++
$$Q%=%=%?%?@@@@'---..00144Hf$($?AAAA(()C)C)E)EFFFF
HHX  """""--//FKK&$*EFFF  ""
2''....
2A--//
2**5111HHX  """""
HHX  """"sBS>LS.BS+T
c||jfd}|S)Nc$||d|zzS)Nz+%dcr[)offset_startindex_iciss   r$innerz6EditorWindow._build_char_in_string_func.<locals>.inners5v6777r&)r)r
startindexr:s   r$rz'EditorWindow._build_char_in_string_funcs&&0.	8	8	8	8r&c`|jr#t||j\}}d|zd|zzSd|zS)Nr@r?)rdivmodr)rrntabsnspacess    r$_make_blankszEditorWindow._make_blankss=<	#At}55NE7%<#-//7Nr&c |j}||dddr|dd|r/|d|||j|dS)Nr=z!=rA)rLrrLrrAr@rr)rrgrLs   r$rzEditorWindow.reindent_tosy<<*D(;;	6KK*H555	5KK$"3"3F";";3
5
5
5r&ct|j\}}|r3|r1t||j\}}t||j\}}ndx}}||z
SNr)IndentSearcherrLrprr)ropenerindentedrindentsmallindentlarges      r$rzEditorWindow.guess_indent%st)$)4488::	*h	*.vt}EEC.xGGC())K+[((r&c|jdS|jjr|jd}n|jd}|dd|ddS)NShowHiderrrtz
 Line Numbers)rDrry)ris_shownhide_sidebarshow_sidebarr)rr\
menu_labels   r$rz&EditorWindow.toggle_line_numbers_event.s$F%	 **,,,JJ**,,,JI](2%A%A%A		C	C	C	C	Cr&)NNNNr$)rAr)T)r
__module____qualname__idlelib.percolatorr)idlelib.colorizerr*r+idlelib.undor,idlelib.iomenur-r.rr/idlelib.statusbarr0idlelib.autocompleter1idlelib.autoexpandr2idlelib.calltipr3idlelib.codecontextr4idlelib.sidebarr5idlelib.formatr6r7r8r9idlelib.parenmatchr:idlelib.zoomheightr;rgetfilesystemencodingfilesystemencodingrvrrrr"rrrrrrerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!rr)r-rstring
ascii_lettersdigitsr5r8rr>rJrTrrrXrrwrrrrrrrrrrrrrrrrrrrDrrrrrrrrrrrrrrrrr@rrrr[r&r$r(r(3s------>>>>>>>>******22222222      000000111111------''''''//////++++++MMMMMMMMMMMM------------2244H!`I`I`I`ID	444
)))V777 ;;;;&J#'#'#'J)))111
111
			
E!!!J	,K



'''444				

(0				
:::
%%%KKK...%
5;J			AAA"
<
<
<&G&G&GP>>>)))"
"
"
",.,.,.,.\   
###$%%%"""FFF&&&"""",,,,***'''((((&&&888	9
HEEE80000$B$B$B$BL"""""""$(((,,,,)))V!#!#!#Fq#q#q#p )))CCCCCCr&r(c:tt|Sr$)rIr)rs r$rr<suU||r&z[ \t]*ct|}|t||fS)zReturn 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_rerrprOgroupr
)rVrrs   r$rrAsH	d##A5577C		,,X667777r&cFeZdZdZdZdZejejdfdZ	dZ
dS)rDz4Manage initial indent guess, returned by run method.cL||_dx|_|_dx|_|_dSrC)rLrfinishedblkopenlineindentedline)rrLs  r$r"zIndentSearcher.__init__Ns-	!""/334,,,r&c|jrdS|jdzx}|_t|dz}|j|ddrdS|j||dzS)NrBr`rz>=rpz lineend+1c)rjrrrLrLr)rrrs   r$readlinezIndentSearcher.readlineSsn=	2VaZDFAww~9T4//	2y}}T4-#7888r&)classdefforifrtrywhilewithc	||jrdS||kr
||vr	||_dS||kr|jr||_d|_dSdSdS)Nr`)rjrkrl)	rrKtokenstartrprVINDENTNAMEOPENERSs	         r$
tokeneaterzIndentSearcher.tokeneater\sb
=	D
T\\ew..#D
V^^ 0^ $DDMMM^^^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.
        )tokenizegenerate_tokensrnr|
TokenErrorSyntaxErrorrkrl)rtokensrws   r$rpzIndentSearcher.runisz
	-dm<<F
(
('''
(#[1			D	!222s(+AAN)rrPrQ__doc__r"rnr~ryrzr|rpr[r&r$rDrDKsl::444
999#/ 
-33333r&rDcp|d}|dkr|d|||dzdz}||fS)zExtract 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).
    r1rNr`)r)srs  r$rrzsB	
sAAvv
bqbEAacddGOa4Kr&[]/)bracketleftbracketrightslashc||}|rtjr|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^rWr_rBrz-[a-z]\bcN|Sr$)rgupperrs r$r]z!get_accelerator.<locals>.<lambda>saggiioo&7&7r&z\b\w+\bct||Sr$)keynamesrrgrs r$r]z!get_accelerator.<locals>.<lambda>s$X\\!''))QWWYY%G%Gr&zKey-Cancelz
Ctrl-BreakzControl-zCtrl-r+z><r?rGrI)rr
	isCocoaTkrsub)rFrrGrs    r$rOrOskk)$$G
)++	>61616r
A
{77;;A
zGGKKA
vr1A
xq))A
z7A&&A
sCA
tS!A
sBA
sBAHr&c|j}|ddd|ddd|ddddS)	Ntcl_wordBreakAfterza brr
tcl_wordcharsz\wtcl_nonwordcharsz\W)r+r)rr+s  r$
fixwordbreaksrsU
BGG %+++GGE?E***GGE%u-----r&cZ|}t|tjddrtjd}nd}tj|dt||}|j}d|d<tdD].}|dd|zt|zdz/dS)	Nr`)rr
rPrAz  r4)
rrargvr
setupAppr(rLrNrArP)rrrrlrLrs      r$_editor_windowrsD$
x|8A;
OD$TH555D9DDN
2YY66Hd1fs1vvo4555566r&__main__)rGzidlelib.idle_test.test_editorrCF)	verbosityexit)rp):
importlib.abcrimportlib.utilrwr{rrarr~rrtkintertkinter.fontrtkinter.ttkrrridlelib.configrrr	r
rrr
idlelib.multicallrrrrridlelib.treeridlelib.utilrrrpython_versionrrr%r(rcompilerfrrDrrrOrrrunittestrGidlelib.idle_test.htestrpr[r&r$<module>rsB								







!!!!!!      ######      ......$$$$$$&&&&&&//111		!


FCFCFCFCFCFCFCFCR0"*Y''888*3*3*3*3*3*3*3*3^$

(
(
(
V...
6
6
6&zD	(AEBBBB++++++Cr&