From 9e8d38278d485bcd0fb6eef57a6ab84ef6015a11 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Wed, 30 Oct 2019 22:11:41 -0400 Subject: [PATCH 1/4] bpo-38636: Fix IDLE tab toggle and file indent width These format menu functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled in 3.7.5 and 3.8.0. --- Lib/idlelib/editor.py | 5 +++-- .../next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py index adeed74059f847..fc1f5083cfb7be 100644 --- a/Lib/idlelib/editor.py +++ b/Lib/idlelib/editor.py @@ -186,8 +186,9 @@ def __init__(self, flist=None, filename=None, key=None, root=None): text.bind("<>", fregion.uncomment_region_event) text.bind("<>", fregion.tabify_region_event) text.bind("<>", fregion.untabify_region_event) - text.bind("<>", self.Indents.toggle_tabs_event) - text.bind("<>", self.Indents.change_indentwidth_event) + indents = self.Indents(self) + text.bind("<>", indents.toggle_tabs_event) + text.bind("<>", indents.change_indentwidth_event) text.bind("", self.move_at_edge_if_selection(0)) text.bind("", self.move_at_edge_if_selection(1)) text.bind("<>", self.del_word_left) diff --git a/Misc/NEWS.d/next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst b/Misc/NEWS.d/next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst new file mode 100644 index 00000000000000..18cb61a0158e73 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst @@ -0,0 +1,3 @@ +Fix IDLE tab toggle and file indent width. These format menu functions +(default shortcuts Alt-T and Alt-U) were mistakenly disabled in 3.7.5 and +3.8.0. From 3dc18385ad718b7604535fa39879b37fb0299b71 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Wed, 20 Nov 2019 00:34:52 -0500 Subject: [PATCH 2/4] Add Indents unittests. --- Lib/idlelib/idle_test/test_format.py | 39 ++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/Lib/idlelib/idle_test/test_format.py b/Lib/idlelib/idle_test/test_format.py index c7b123e9d513af..20b5970f4982da 100644 --- a/Lib/idlelib/idle_test/test_format.py +++ b/Lib/idlelib/idle_test/test_format.py @@ -417,7 +417,7 @@ def tearDown(self): self.text.delete('1.0', 'end') code_sample = """\ - +# WS line needed for test. class C1(): # Class comment. def __init__(self, a, b): @@ -574,7 +574,42 @@ def test_ask_tabwidth(self, askinteger): self.assertEqual(ask(), 10) -class rstripTest(unittest.TestCase): +class IndentsTest(unittest.TestCase): + + @mock.patch.object(ft, "askyesno") + def test_toggle_tabs(self, askyesno): + editor = DummyEditwin(None, None) # usetabs == False. + indents = ft.Indents(editor) + askyesno.return_value = True + + indents.toggle_tabs_event(None) + self.assertEqual(editor.usetabs, True) + self.assertEqual(editor.indentwidth, 8) + + indents.toggle_tabs_event(None) + self.assertEqual(editor.usetabs, False) + self.assertEqual(editor.indentwidth, 8) + + @mock.patch.object(ft, "askinteger") + def test_change_indentwidth(self, askinteger): + editor = DummyEditwin(None, None) # indentwidth == 4. + indents = ft.Indents(editor) + + askinteger.return_value = None + indents.change_indentwidth_event(None) + self.assertEqual(editor.indentwidth, 4) + + askinteger.return_value = 3 + indents.change_indentwidth_event(None) + self.assertEqual(editor.indentwidth, 3) + + askinteger.return_value = 5 + editor.usetabs = True + indents.change_indentwidth_event(None) + self.assertEqual(editor.indentwidth, 3) + + +class RstripTest(unittest.TestCase): def test_rstrip_line(self): editor = MockEditor() From 1439fe8531c35483ac97e0121198bd80caef9392 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Wed, 20 Nov 2019 00:39:49 -0500 Subject: [PATCH 3/4] News item. --- Lib/idlelib/NEWS.txt | 4 ++++ .../next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index b02a9880505e83..c6aa00d0d54b32 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,6 +3,10 @@ Released on 2020-10-05? ====================================== +bpo-38636: Fix IDLE Format menu tab toggle and file indent width. These +functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled +in 3.7.5 and 3.8.0. + bpo-4360: Add an option to toggle IDLE's cursor blink for shell, editor, and output windows. See Settings, General, Window Preferences, Cursor Blink. Patch by Zachary Spytz. diff --git a/Misc/NEWS.d/next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst b/Misc/NEWS.d/next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst index 18cb61a0158e73..4262dbea6d8673 100644 --- a/Misc/NEWS.d/next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst +++ b/Misc/NEWS.d/next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst @@ -1,3 +1,3 @@ -Fix IDLE tab toggle and file indent width. These format menu functions -(default shortcuts Alt-T and Alt-U) were mistakenly disabled in 3.7.5 and -3.8.0. +Fix IDLE Format menu tab toggle and file indent width. These functions +(default shortcuts Alt-T and Alt-U) were mistakenly disabled in 3.7.5 +and 3.8.0. From c78dd1dff182548a386668be3e9f2ab45d277dcf Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Wed, 20 Nov 2019 00:46:10 -0500 Subject: [PATCH 4/4] Indents now *is* tested. --- Lib/idlelib/format.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Lib/idlelib/format.py b/Lib/idlelib/format.py index bced4c1770eb01..2b0980565734a4 100644 --- a/Lib/idlelib/format.py +++ b/Lib/idlelib/format.py @@ -353,8 +353,7 @@ def _asktabwidth(self): maxvalue=16) -# With mixed indents not allowed, these are semi-useless and not unittested. -class Indents: # pragma: no cover +class Indents: "Change future indents." def __init__(self, editwin):