[3.6] bpo-29910: IDLE no longer deletes a character after commenting … · python/cpython@8bdc3bd (original) (raw)
1
``
`-
import importlib
`
2
1
`import importlib.abc
`
3
2
`import importlib.util
`
4
3
`import os
`
`@@ -147,7 +146,7 @@ def init(self, flist=None, filename=None, key=None, root=None):
`
147
146
`text.bind("<>", self.python_docs)
`
148
147
`text.bind("<>", self.about_dialog)
`
149
148
`text.bind("<>", self.config_dialog)
`
150
``
`-
text.bind("<>", self.open_module)
`
``
149
`+
text.bind("<>", self.open_module_event)
`
151
150
`text.bind("<>", lambda event: "break")
`
152
151
`text.bind("<>", self.select_all)
`
153
152
`text.bind("<>", self.remove_selection)
`
`@@ -294,7 +293,7 @@ def new_callback(self, event):
`
294
293
`def home_callback(self, event):
`
295
294
`if (event.state & 4) != 0 and event.keysym == "Home":
`
296
295
`# state&4==Control. If , use the Tk binding.
`
297
``
`-
return
`
``
296
`+
return None
`
298
297
`if self.text.index("iomark") and \
`
299
298
`self.text.compare("iomark", "<=", "insert lineend") and \
`
300
299
`self.text.compare("insert linestart", "<=", "iomark"):
`
`@@ -423,6 +422,7 @@ def right_menu_event(self, event):
`
423
422
`rmenu.tk_popup(event.x_root, event.y_root)
`
424
423
`if iswin:
`
425
424
`self.text.config(cursor="ibeam")
`
``
425
`+
return "break"
`
426
426
``
427
427
`rmenu_specs = [
`
428
428
`# ("Label", "<>", "statefuncname"), ...
`
`@@ -464,11 +464,13 @@ def about_dialog(self, event=None):
`
464
464
`"Handle Help 'About IDLE' event."
`
465
465
`# Synchronize with macosx.overrideRootMenu.about_dialog.
`
466
466
`help_about.AboutDialog(self.top)
`
``
467
`+
return "break"
`
467
468
``
468
469
`def config_dialog(self, event=None):
`
469
470
`"Handle Options 'Configure IDLE' event."
`
470
471
`# Synchronize with macosx.overrideRootMenu.config_dialog.
`
471
472
`configdialog.ConfigDialog(self.top,'Settings')
`
``
473
`+
return "break"
`
472
474
``
473
475
`def help_dialog(self, event=None):
`
474
476
`"Handle Help 'IDLE Help' event."
`
`@@ -478,6 +480,7 @@ def help_dialog(self, event=None):
`
478
480
`else:
`
479
481
`parent = self.top
`
480
482
`help.show_idlehelp(parent)
`
``
483
`+
return "break"
`
481
484
``
482
485
`def python_docs(self, event=None):
`
483
486
`if sys.platform[:3] == 'win':
`
`@@ -497,7 +500,7 @@ def cut(self,event):
`
497
500
`def copy(self,event):
`
498
501
`if not self.text.tag_ranges("sel"):
`
499
502
`# There is no selection, so do nothing and maybe interrupt.
`
500
``
`-
return
`
``
503
`+
return None
`
501
504
`self.text.event_generate("<>")
`
502
505
`return "break"
`
503
506
``
`@@ -515,6 +518,7 @@ def select_all(self, event=None):
`
515
518
`def remove_selection(self, event=None):
`
516
519
`self.text.tag_remove("sel", "1.0", "end")
`
517
520
`self.text.see("insert")
`
``
521
`+
return "break"
`
518
522
``
519
523
`def move_at_edge_if_selection(self, edge_index):
`
520
524
`"""Cursor move begins at start or end of selection
`
`@@ -575,8 +579,9 @@ def goto_line_event(self, event):
`
575
579
`return "break"
`
576
580
`text.mark_set("insert", "%d.0" % lineno)
`
577
581
`text.see("insert")
`
``
582
`+
return "break"
`
578
583
``
579
``
`-
def open_module(self, event=None):
`
``
584
`+
def open_module(self):
`
580
585
`"""Get module name from user and open it.
`
581
586
``
582
587
` Return module path or None for calls by open_class_browser
`
`@@ -600,21 +605,27 @@ def open_module(self, event=None):
`
600
605
`self.io.loadfile(file_path)
`
601
606
`return file_path
`
602
607
``
``
608
`+
def open_module_event(self, event):
`
``
609
`+
self.open_module()
`
``
610
`+
return "break"
`
``
611
+
603
612
`def open_class_browser(self, event=None):
`
604
613
`filename = self.io.filename
`
605
614
`if not (self.class.name == 'PyShellEditorWindow'
`
606
615
`and filename):
`
607
616
`filename = self.open_module()
`
608
617
`if filename is None:
`
609
``
`-
return
`
``
618
`+
return "break"
`
610
619
`head, tail = os.path.split(filename)
`
611
620
`base, ext = os.path.splitext(tail)
`
612
621
`from idlelib import browser
`
613
622
`browser.ClassBrowser(self.flist, base, [head])
`
``
623
`+
return "break"
`
614
624
``
615
625
`def open_path_browser(self, event=None):
`
616
626
`from idlelib import pathbrowser
`
617
627
`pathbrowser.PathBrowser(self.flist)
`
``
628
`+
return "break"
`
618
629
``
619
630
`def open_turtle_demo(self, event = None):
`
620
631
`import subprocess
`
`@@ -623,6 +634,7 @@ def open_turtle_demo(self, event = None):
`
623
634
`'-c',
`
624
635
`'from turtledemo.main import main; main()']
`
625
636
`subprocess.Popen(cmd, shell=False)
`
``
637
`+
return "break"
`
626
638
``
627
639
`def gotoline(self, lineno):
`
628
640
`if lineno is not None and lineno > 0:
`
`@@ -879,6 +891,7 @@ def long_title(self):
`
879
891
``
880
892
`def center_insert_event(self, event):
`
881
893
`self.center()
`
``
894
`+
return "break"
`
882
895
``
883
896
`def center(self, mark="insert"):
`
884
897
`text = self.text
`
`@@ -910,6 +923,7 @@ def get_geometry(self):
`
910
923
``
911
924
`def close_event(self, event):
`
912
925
`self.close()
`
``
926
`+
return "break"
`
913
927
``
914
928
`def maybesave(self):
`
915
929
`if self.io:
`
`@@ -1357,6 +1371,7 @@ def comment_region_event(self, event):
`
1357
1371
`line = lines[pos]
`
1358
1372
`lines[pos] = '##' + line
`
1359
1373
`self.set_region(head, tail, chars, lines)
`
``
1374
`+
return "break"
`
1360
1375
``
1361
1376
`def uncomment_region_event(self, event):
`
1362
1377
`head, tail, chars, lines = self.get_region()
`
`@@ -1370,6 +1385,7 @@ def uncomment_region_event(self, event):
`
1370
1385
`line = line[1:]
`
1371
1386
`lines[pos] = line
`
1372
1387
`self.set_region(head, tail, chars, lines)
`
``
1388
`+
return "break"
`
1373
1389
``
1374
1390
`def tabify_region_event(self, event):
`
1375
1391
`head, tail, chars, lines = self.get_region()
`
`@@ -1382,6 +1398,7 @@ def tabify_region_event(self, event):
`
1382
1398
`ntabs, nspaces = divmod(effective, tabwidth)
`
1383
1399
`lines[pos] = '\t' * ntabs + ' ' * nspaces + line[raw:]
`
1384
1400
`self.set_region(head, tail, chars, lines)
`
``
1401
`+
return "break"
`
1385
1402
``
1386
1403
`def untabify_region_event(self, event):
`
1387
1404
`head, tail, chars, lines = self.get_region()
`
`@@ -1390,6 +1407,7 @@ def untabify_region_event(self, event):
`
1390
1407
`for pos in range(len(lines)):
`
1391
1408
`lines[pos] = lines[pos].expandtabs(tabwidth)
`
1392
1409
`self.set_region(head, tail, chars, lines)
`
``
1410
`+
return "break"
`
1393
1411
``
1394
1412
`def toggle_tabs_event(self, event):
`
1395
1413
`if self.askyesno(
`