gh-65339: Save IDLE Shell and Output windows as text by default (#152742)

Their content is not Python source, so the Save As dialog now lists text
files first and defaults to a ".txt" extension.
This commit is contained in:
Serhiy Storchaka
2026-07-01 23:36:34 +03:00
committed by GitHub
parent 51b511d729
commit efcfb1a4e0
4 changed files with 23 additions and 0 deletions
+7
View File
@@ -41,6 +41,13 @@ class OutputWindowTest(unittest.TestCase):
self.assertFalse(w.ispythonsource('test.txt'))
self.assertFalse(w.ispythonsource(__file__))
def test_save_defaults_to_text(self):
# gh-65339: output is saved as text, not Python source.
io = self.window.io
self.assertEqual(io.defaultextension, '.txt')
# Text files are offered before Python files.
self.assertEqual(io.filetypes[0][0], 'Text files')
def test_window_title(self):
self.assertEqual(self.window.top.title(), 'Output' + ' (%s)' % platform.python_version())
+9
View File
@@ -384,7 +384,16 @@ class IOBinding:
("All files", "*"),
)
# Output windows (Shell, Output) are not Python source, so they list
# text files first and default to ".txt" (gh-65339).
text_filetypes = (
("Text files", "*.txt", "TEXT"),
("Python files", py_extensions, "TEXT"),
("All files", "*"),
)
defaultextension = '.py' if sys.platform == 'darwin' else ''
text_defaultextension = '.txt'
def askopenfile(self):
dir, base = self.defaultfilename("open")
+4
View File
@@ -78,6 +78,10 @@ class OutputWindow(EditorWindow):
def __init__(self, *args):
EditorWindow.__init__(self, *args)
self.text.bind("<<goto-file-line>>", self.goto_file_line)
# Output is not Python source, so save it as text by default
# (gh-65339).
self.io.filetypes = self.io.text_filetypes
self.io.defaultextension = self.io.text_defaultextension
# Customize EditorWindow
def ispythonsource(self, filename):
@@ -0,0 +1,3 @@
Saving the IDLE Shell or an Output window now defaults to a ``.txt``
extension and lists text files before Python files, since their content is
not Python source.