Skip to content

Commit b846247

Browse files
authored
bpo-38636: Fix IDLE tab toggle and file indent width (pythonGH-17008)
These Format menu functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled in 3.7.5 and 3.8.0.
1 parent 7483451 commit b846247

File tree

5 files changed

+48
-6
lines changed

5 files changed

+48
-6
lines changed

Lib/idlelib/NEWS.txt

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ Released on 2020-10-05?
33
======================================
44

55

6+
bpo-38636: Fix IDLE Format menu tab toggle and file indent width. These
7+
functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled
8+
in 3.7.5 and 3.8.0.
9+
610
bpo-4360: Add an option to toggle IDLE's cursor blink for shell,
711
editor, and output windows. See Settings, General, Window Preferences,
812
Cursor Blink. Patch by Zachary Spytz.

Lib/idlelib/editor.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,9 @@ def __init__(self, flist=None, filename=None, key=None, root=None):
186186
text.bind("<<uncomment-region>>", fregion.uncomment_region_event)
187187
text.bind("<<tabify-region>>", fregion.tabify_region_event)
188188
text.bind("<<untabify-region>>", fregion.untabify_region_event)
189-
text.bind("<<toggle-tabs>>", self.Indents.toggle_tabs_event)
190-
text.bind("<<change-indentwidth>>", self.Indents.change_indentwidth_event)
189+
indents = self.Indents(self)
190+
text.bind("<<toggle-tabs>>", indents.toggle_tabs_event)
191+
text.bind("<<change-indentwidth>>", indents.change_indentwidth_event)
191192
text.bind("<Left>", self.move_at_edge_if_selection(0))
192193
text.bind("<Right>", self.move_at_edge_if_selection(1))
193194
text.bind("<<del-word-left>>", self.del_word_left)

Lib/idlelib/format.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -353,8 +353,7 @@ def _asktabwidth(self):
353353
maxvalue=16)
354354

355355

356-
# With mixed indents not allowed, these are semi-useless and not unittested.
357-
class Indents: # pragma: no cover
356+
class Indents:
358357
"Change future indents."
359358

360359
def __init__(self, editwin):

Lib/idlelib/idle_test/test_format.py

+37-2
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ def tearDown(self):
417417
self.text.delete('1.0', 'end')
418418

419419
code_sample = """\
420-
420+
# WS line needed for test.
421421
class C1():
422422
# Class comment.
423423
def __init__(self, a, b):
@@ -574,7 +574,42 @@ def test_ask_tabwidth(self, askinteger):
574574
self.assertEqual(ask(), 10)
575575

576576

577-
class rstripTest(unittest.TestCase):
577+
class IndentsTest(unittest.TestCase):
578+
579+
@mock.patch.object(ft, "askyesno")
580+
def test_toggle_tabs(self, askyesno):
581+
editor = DummyEditwin(None, None) # usetabs == False.
582+
indents = ft.Indents(editor)
583+
askyesno.return_value = True
584+
585+
indents.toggle_tabs_event(None)
586+
self.assertEqual(editor.usetabs, True)
587+
self.assertEqual(editor.indentwidth, 8)
588+
589+
indents.toggle_tabs_event(None)
590+
self.assertEqual(editor.usetabs, False)
591+
self.assertEqual(editor.indentwidth, 8)
592+
593+
@mock.patch.object(ft, "askinteger")
594+
def test_change_indentwidth(self, askinteger):
595+
editor = DummyEditwin(None, None) # indentwidth == 4.
596+
indents = ft.Indents(editor)
597+
598+
askinteger.return_value = None
599+
indents.change_indentwidth_event(None)
600+
self.assertEqual(editor.indentwidth, 4)
601+
602+
askinteger.return_value = 3
603+
indents.change_indentwidth_event(None)
604+
self.assertEqual(editor.indentwidth, 3)
605+
606+
askinteger.return_value = 5
607+
editor.usetabs = True
608+
indents.change_indentwidth_event(None)
609+
self.assertEqual(editor.indentwidth, 3)
610+
611+
612+
class RstripTest(unittest.TestCase):
578613

579614
def test_rstrip_line(self):
580615
editor = MockEditor()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Fix IDLE Format menu tab toggle and file indent width. These functions
2+
(default shortcuts Alt-T and Alt-U) were mistakenly disabled in 3.7.5
3+
and 3.8.0.

0 commit comments

Comments
 (0)