[Python-Dev] Fun with whitespace (original) (raw)
Tim Peters tim.peters at gmail.com
Wed Jul 21 05:52:11 CEST 2004
- Previous message: [Python-Dev] Fun with whitespace
- Next message: [Python-Dev] Fun with whitespace
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Kurt B. Kaiser]
I'm thinking that it might be a good idea to modify IDLE to use four-space indenting only, and remove the Tab options from the configuration dialog.
The conceptual disconnect here comes from the IDLE shell window, which still defaults to using hard tabs. This appears to be a consequence of setting (the conceptual) sys.PS2 to an empty string but (the conceptual) sys.PS1 to a 4-character string, so that continued lines "don't look right" in the shell unless hard tabs are used. I dislike this so much that I avoid using the shell window most days -- I'd rather it looked "just like" a command-line shell.
Right now, every time a program is Run/F5, IDLE runs a version of tabnanny on it and then runs a syntax check. We could add a reindent.py check after tabnanny (if tabnanny fails, the user is notified to fix things first). Indents would be normalized at 4 spaces, and if an error was detected, a dialog would warn the user that the file would be changed. The user could confirm (auto fix) or cancel and fix things manually.
I know Guido wants IDLE to whine whenever it's about to save a code file, but that dialog is a PITA. I sure don't want two of 'em! I vote for a silent revolution, where you add a secret "don't whine at me about any changes you make when I hit F5 -- just do it and leave me alone" option that only I know about .
I've tried to use IDLE to convert tab-indented code to space-indented, but it's never worked well for me. If you set the wrong number of spaces/tab the code gets scrambled. reindent.py seems to work fine. Are there situations in which it can fail, assuming tabnanny is happy?
None are known. All of Python has been run through it now , and all of Zope3 was run through it many months ago w/o problems. If you don't check the syntax first, it can be baffling, because tokenize.py can be baffling. For example, if you have an extra left paren on some line, tokenize is likely to produce an incomprehensible exception at the end of the file, claiming that it hit EOF in an unterminated string.
The implementation would continue to create the .bak file. Alternatively, maybe the undo capability could be extended to cover the reindent. Or both.
Is it time for IDLE to enforce four-space indentation? Any opinions?
4-space is all I ever use -- except in the shell window. So have to leave objections to someone insane ...
- Previous message: [Python-Dev] Fun with whitespace
- Next message: [Python-Dev] Fun with whitespace
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]