homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author cben
Recipients cben
Date 2010年01月11日.12:36:17
SpamBayes Score 2.8884442e-09
Marked as misclassified No
Message-id <1263213381.47.0.181451927584.issue7676@psf.upfronthosting.co.za>
In-reply-to
Content
IDLE defaults to indenting with 4 spaces in editor windows, but hard TABs in the Python Shell window. This is inconsistent with PEP 8; what's worse, it's makes copy-paste code between the shell and editor windows confusing and dangerous!
Recently I gave a 3-day Python course to 6 people. I spent some time explaining the dangers of TABs with Python's indentation-sensitive syntax and telling them "just use 4 spaces and all will be OK". A few hours later one of them asked me why IDLE is refusing to run his code. Turns out he copy-pasted code he tried out in the shell, edited it and tried running it, which resulted in a mix of tabs and spaces (which triggered IDLE's tabnanny check) and a mixture of 4 and 8 indents (which is ugly).
I had to explain IDLE's confusing behavior, introduce them to Untabify, and apologize for the inconvenience. All this TABs stuff (and Untabify) are things people should eventually learn - but they shouldn't bite them on their first day! (This is what Ubuntu calls a "papercut".)
The rationale for the current behavior seems to be making indentation clear despite the prompt offsetting the first line by 4:
>>> for i in range(3):
 print i
There are 3 alternative behaviors that would be better:
 (1) Use 8 spaces instead of a TAB.
 (2) Use 4 spaces.
 (3) Use 4 spaces, but add a GUI left margin of 4 to continuation lines.
(3) would be ideal, making copy-paste work cleanly while looking good. I'm not sure if it can be implemented easily, but I'll look into it.
If it's hard, (2) would still be a big improvement IMHO. I think correct behaviour is more important than looking good after ">>> " - but others may disagree on this.
If there is doubt, (1) is still strictly an improvement. It can lead to mixed 8/4 spaces - but at least there won't be invisible problems that the user doesn't understand.
[Configurability concerns: all I said above refers to the *default* behavior of IDLE, which should follow 4-spaces. The user should be able to configure it to use another width, or TABs. This option already exists - but it's ignored outright by the shell window. Solutions (2) and (3) would make the shell window respect it.]
History
Date User Action Args
2010年01月11日 12:36:21cbensetrecipients: + cben
2010年01月11日 12:36:21cbensetmessageid: <1263213381.47.0.181451927584.issue7676@psf.upfronthosting.co.za>
2010年01月11日 12:36:19cbenlinkissue7676 messages
2010年01月11日 12:36:17cbencreate

AltStyle によって変換されたページ (->オリジナル) /