]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-38636: Fix IDLE tab toggle and file indent width (GH-17008)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 20 Nov 2019 06:37:09 +0000 (22:37 -0800)
committerGitHub <noreply@github.com>
Wed, 20 Nov 2019 06:37:09 +0000 (22:37 -0800)
These Format menu functions (default shortcuts Alt-T and Alt-U)
were mistakenly disabled in 3.7.5 and 3.8.0.
(cherry picked from commit b8462477bfd01ff21461065d5063e6b0238ca809)

Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Lib/idlelib/NEWS.txt
Lib/idlelib/editor.py
Lib/idlelib/format.py
Lib/idlelib/idle_test/test_format.py
Misc/NEWS.d/next/IDLE/2019-10-30-22-11-16.bpo-38636.hUhDeB.rst [new file with mode: 0644]

index 2fd2ea19b5a0f7eb4e9559c5627a367a1103b6dc..53348ee0af0e9d4d7aa6340e5823452d4bc70d26 100644 (file)
@@ -3,6 +3,10 @@ Released on 2019-12-16?
 ======================================
 
 
+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.
index dff104ff0f18f249637cb74750ec5f39f7a6245a..92dcf57c4ff260eb96abaee9e80fd2c7fcdd789a 100644 (file)
@@ -186,8 +186,9 @@ class EditorWindow(object):
         text.bind("<<uncomment-region>>", fregion.uncomment_region_event)
         text.bind("<<tabify-region>>", fregion.tabify_region_event)
         text.bind("<<untabify-region>>", fregion.untabify_region_event)
-        text.bind("<<toggle-tabs>>", self.Indents.toggle_tabs_event)
-        text.bind("<<change-indentwidth>>", self.Indents.change_indentwidth_event)
+        indents = self.Indents(self)
+        text.bind("<<toggle-tabs>>", indents.toggle_tabs_event)
+        text.bind("<<change-indentwidth>>", indents.change_indentwidth_event)
         text.bind("<Left>", self.move_at_edge_if_selection(0))
         text.bind("<Right>", self.move_at_edge_if_selection(1))
         text.bind("<<del-word-left>>", self.del_word_left)
index bced4c1770eb01717af0015755a24cebe658aa5f..2b0980565734a4d45031764b90141ced884fc2b4 100644 (file)
@@ -353,8 +353,7 @@ class FormatRegion:
             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):
index c7b123e9d513af634f527e158ea3cb86d14c46d3..20b5970f4982da2f5fcac49d8861dcf1ca6bbbc9 100644 (file)
@@ -417,7 +417,7 @@ class FormatRegionTest(unittest.TestCase):
         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 @@ class C1():
         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()
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 (file)
index 0000000..4262dbe
--- /dev/null
@@ -0,0 +1,3 @@
+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.