Terry J. Reedy <tjre...@udel.edu> added the comment:

Yes, lets discuss actual problems and various possible solutions.

Raymond's example is incomplete as it omits multiline statements, which is 
where the real problems lie and the reason a fix was sorely needed.  This has 
been more or less agreed on since at least 2005.

Old:
------------------------------
>>> if a:
        print('okay:'
else:
        if a is None:
                print('none:')
        else:
                print('else:')

else:
------------------------------

Possible confusion between input and output is a pre-existing issue.  For the 
default themes, Shell User Output has the same background color as Code or 
Normal Text.  The foreground is blue.  The lack of contrast is worse on the 
dark theme.  I think using the same background was a mistake, but so far 
changing the default has been considered off limits. The pre-existing fix for 
distinguishing output is to customize colors for Shell User Output, as I have 
done. I have also given Shell User Exceptions more contrast.  One can make both 
as different as one wants.

In 2014, #7676, Raymond said that the indent mess was a "major PITA" and the 
impossibility of copy-pasting correctly indented code into an editor  "has been 
a continual source of frustration for students in my Python courses as well.  
I'm looking forward to it being fixed."

At the time, I had no more idea how to fix this than Kurt Kaiser did in the 
2000s.  But I eventually realized that the problem is entirely due to the first 
line of multiline statements being indented relative to following code lines, 
unlike the REPL.  The fix (and the only acceptible fix) was and is to stop 
doing that.

The day before the beta1 release*, Tal and I merged a beta-quality release that 
we said would need improvement before production release.
------------------------------
>>> if a:
...     print('okay:'
... else:
...     if a is None:
...         print('none:')
...     else:
...         print('else:')
...
    else:
------------------------------
I am sure that a graphics designer would consider this improved.  Unindented 
code now lines up, and the indents are that same as in any decent python-aware 
editor.  In any case, the above is identical to the REPL except that in the 
REPL, the output starts at the left, under the prompts.

If one selects the above lines, easily done by clicking and dragging on the 
sidebar, just as with line numbers, right clicks, and selects 'Copy with 
prompts' on the context menu, one gets the above *with*  output 'else' to the 
left.  IDLE is now as useful for interactive snippets as the REPL.  This is 
mentioned in the IDLE What's New and News items.

I can imagine a possible alternative fix that would put output under the 
prompts in Shell, not just in the clipboard copy.  It would involve a fixed 
input prompt above the code entry area and side prompts in the history area.  
This would be a variation on the two-text solution that I discussed on #37892.

As for copying code to paste into an editor: As I believe was mentioned above, 
we had 'Copy only code' on the context menus, but removed it because it also 
copied user input in response to user code prompts, which is currently tagged 
the same as code entered in response to the Shell's prompts.  Fixing this will 
be a high priority issue.  When it is, we will list both new option on the 
Shell menu.

I will soon open another issue for the sidebar colors.  I consider the current 
colors to be placeholders.  We set that aside to get the sidebar otherwise 
ready.  Some might prefer a background matching the general shell background so 
that there is no vertical separation.


* Not by choice.  We were delayed 6 months because Azure Pipelines, on Ubuntu 
and Windows, changes the test environment by grabbing sys.stdout.  Shell 
receives input on sys.stdout.  So when test code sent text to shell via 
sys.stdout, it went to Pipelines instead of Shell, breaking the tests.  We 
should have ignored those failures, but didn't.  Once we realized the problem, 
less that 2 weeks before the beta, we had the test steal sys.stdout back for 
each test and moved forward.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue37903>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to