From 3528b4713bd1890e03a6e9a3b5c1605dbce2534d Mon Sep 17 00:00:00 2001
From: Terry Jan Reedy
Date: Sun, 8 Mar 2020 14:32:42 -0400
Subject: [PATCH] bpo-39852: IDLE 'Go to line' deletes selection, updates
status (GH-18801)
It appears standard that moving the text insert cursor away from a selection clears the
selection. Clearing prevents accidental deletion of a possibly off-screen bit of text.
The update is for Ln and Col on the status bar.
(cherry picked from commit 2522db11df102be3baf25ce9e816ebe8ffdb7fcc)
Co-authored-by: Terry Jan Reedy
---
Doc/library/idle.rst | 4 ++-
Lib/idlelib/NEWS.txt | 3 ++
Lib/idlelib/editor.py | 5 ++-
Lib/idlelib/help.html | 33 +++++++++++--------
.../2020-03-06-01-55-14.bpo-39852.QjA1qF.rst | 2 ++
5 files changed, 31 insertions(+), 16 deletions(-)
create mode 100644 Misc/NEWS.d/next/IDLE/2020-03-06-01-55-14.bpo-39852.QjA1qF.rst
diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst
index fd6e309567de39..b1192e7bb46552 100644
--- a/Doc/library/idle.rst
+++ b/Doc/library/idle.rst
@@ -142,7 +142,9 @@ Replace...
Open a search-and-replace dialog.
Go to Line
- Move cursor to the line number requested and make that line visible.
+ Move the cursor to the beginning of the line requested and make that
+ line visible. A request past the end of the file goes to the end.
+ Clear any selection and update the line and column status.
Show Completions
Open a scrollable list allowing selection of keywords and attributes. See
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 0fa08962b41071..e615b7941b15aa 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -3,6 +3,9 @@ Released on 2019-12-16?
======================================
+bpo-39852: Edit "Go to line" now clears any selection, preventing
+accidental deletion. It also updates Ln and Col on the status bar.
+
bpo-39781: Selecting code context lines no longer causes a jump.
bpo-39663: Add tests for pyparse find_good_parse_start().
diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py
index 04c786dc5234c2..5b81b52f9196c4 100644
--- a/Lib/idlelib/editor.py
+++ b/Lib/idlelib/editor.py
@@ -678,8 +678,11 @@ def goto_line_event(self, event):
if lineno <= 0:
text.bell()
return "break"
- text.mark_set("insert", "%d.0" % lineno)
+
+ text.tag_remove("sel", "1.0", "end")
+ text.mark_set("insert", f'{lineno}.0')
text.see("insert")
+ self.set_line_and_column()
return "break"
def open_module(self):
diff --git a/Lib/idlelib/help.html b/Lib/idlelib/help.html
index 0b2bdd2e174ccf..424c6b50f339e1 100644
--- a/Lib/idlelib/help.html
+++ b/Lib/idlelib/help.html
@@ -4,7 +4,7 @@
- IDLE — Python 3.9.0a1 documentation
+ IDLE — Python 3.9.0a4 documentation
@@ -17,7 +17,7 @@
@@ -71,7 +71,7 @@