Title: IDLE: Pressing "Home" on Windows places cursor before ">>>"
Type: behavior Stage: resolved
Components: IDLE Versions: Python 3.9
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: terry.reedy Nosy List: cheryl.sabella, louielu, serhiy.storchaka, terry.reedy
Priority: normal Keywords:

Created on 2017-11-02 22:09 by terry.reedy, last changed 2021-06-11 04:10 by terry.reedy. This issue is now closed.

Messages (5)
msg305452 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-11-02 22:09
If one enters text in Shell after a '>>> ' prompt, Home should initially send the cursor between the prompt and entered text and then to the beginning of the line, and so on as a toggle.  On all current releases (and the final 3.5.4), on my Win10 machine, the cursor goes to the beginning of the line and stays there.

This is nearly the same as #3851, which patched EditorWindow.home_callback on 2011-3-21 and -25.  The problem then only affected Windows, because it involved event.state for keypresses, which is set differently on Windows and *nix.

This issue is slightly different in that the Numlock key no longer matters. (See KBK's  2009-04-04 02:51 message.)  Cherl or Louie, is this one also Windows-only or does it occur on Linux?
According to hg annotate, the only subsequent patch to .home_callback before the git switch was 2012-12-24 for #16511.  It changed the part of the function that adjusted selection, after moving the cursor, if Shift-Home was pressed.  When the cursor moves to the beginning of the line, the selection includes the prompt.  3.5 has not been patched since the switch to git, so the problem must predate the switch.

2.7 on Windows runs with tk 8.5.15, so a later tk change cannot be the problem.  So I suspect that the 'culprit' is either an earlier 'fix' to tk or a patch to tkinter since 2011, combined with the absence of a test in IDLE for correct behavior.  Serhiy, do you have any ideas?
msg305465 - (view) Author: Cheryl Sabella (cheryl.sabella) * (Python committer) Date: 2017-11-03 09:46
On Ubuntu, HOME initially goes to between the text and >>>.  Pressing it again moves it before the >>> and then it toggles between the two.  So, it appears to be working as expected.
msg310506 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2018-01-23 16:33
#17060 and #18444 are similar issues for Mac.
msg311647 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2018-02-05 08:05
On #32761, Raymond reports that is ^A ('Home' for him) is bound to <<beginning-of-line>>, he sees the same behavior.  So this is not Windows only.

Any change to EditorWindow.home_callback must be tested on all 3 major systems before merging.

I hope to fix this and other Shell issues by separating prompt and code entry, in a proposal-in-progress, but home_callback would still need editing.
msg395602 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2021-06-11 04:10
IDLE Classic Windows currently works correctly.  A custom keyset with <<beginning-of-line>> badly rebound does not.  So maybe I was using the latter when I open this.  Anyway, this is moot in 3.10 with prompt removed, and I intend to backpart the change.
Date User Action Args
2021-06-11 04:10:05terry.reedysetstatus: open -> closed
resolution: not a bug
messages: + msg395602

stage: test needed -> resolved
2019-09-19 18:14:42terry.reedysetversions: + Python 3.9, - Python 2.7, Python 3.6, Python 3.7
2018-02-05 08:05:16terry.reedysetmessages: + msg311647
2018-01-23 16:33:27terry.reedysetmessages: + msg310506
2017-11-03 09:46:26cheryl.sabellasetmessages: + msg305465
2017-11-02 22:09:41terry.reedycreate