diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py index 3128934763a1c0..1e1e871b1bde3b 100644 --- a/Lib/idlelib/editor.py +++ b/Lib/idlelib/editor.py @@ -605,13 +605,16 @@ def python_docs(self, event=None): return "break" def cut(self,event): + if not self.text.tag_ranges('sel'): + self.text.tag_add('sel', 'insert linestart', 'insert+1l linestart') + self.text.mark_set('insert', 'insert linestart') self.text.event_generate("<>") return "break" def copy(self,event): if not self.text.tag_ranges("sel"): - # There is no selection, so do nothing and maybe interrupt. - return None + self.text.tag_add('sel', 'insert linestart', 'insert+1l linestart') + self.text.mark_set('insert', 'insert linestart') self.text.event_generate("<>") return "break" diff --git a/Misc/NEWS.d/next/IDLE/2026-02-23-17-28-34.gh-issue-94521.vlr8XB.rst b/Misc/NEWS.d/next/IDLE/2026-02-23-17-28-34.gh-issue-94521.vlr8XB.rst new file mode 100644 index 00000000000000..a32ab2c0526438 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2026-02-23-17-28-34.gh-issue-94521.vlr8XB.rst @@ -0,0 +1 @@ +Copy or cut the current line when no text is selected in IDLE. Patch by Shixian Li.