Is there a way to configure IDLE to use spaces instead of tabs for indenting?

Terry Reedy tjreedy at udel.edu
Thu Sep 6 14:11:26 EDT 2012


On 9/6/2012 9:43 AM, Alex wrote:

>> On Saturday, 25 August 2012 04:03:52 UTC+5:30, Alex  wrote:
>>> I'm new to Python and have been using IDLE 3.2.3 to experiment with
>>> code as I learn. Despite being configured to use a 4 space
>>> indentation width,  sometimes IDLE's "smart" indentation insists
 >>> upon using width-8 tabs.

[snip]

> Agreed. I like PyDev in Eclipse, but sometimes I just want to try out
> something quick in the interpreter, to ensure I understand it or do a
> quick experiment.

You have two choices that come with the distribution: the console and 
IDLE. I prefer IDLE. IPython and other shells and IDEs are other choices.

> Since indentation is syntactically significant in
> Python, I think fixing the interpreter to produce good, readable,
> cut-and-pasteable, and Pythonic code is more important than a cosmetic
> feature, but less important than true bugs.

IDLE is not the interpreter. As I said before, the IDLE editor *already* 
does what you want. The IDLE Shell is intended mainly for single-line 
inputs. For compound statements, it does automatic indenting, unlike the 
console (at least not on Windows). It uses a tab to guarantee that the 
code is visually indented. It does not use secondary prompts because a) 
they would not line up anyway with proportional fonts and b) they would 
appear in cut and paste copies. This probably count be improved, and has 
been discussed, but someone has to volunteer to write a patch that shows 
that it can be improved without introducing negative consequences. I 
would test one if one appears.

For more than a three-line compound statement, I use the editor with a 
scratchpad file where editing is *much* easier. If the compound 
statement is a class or function definition, you need more statements 
anyway to actually exercise the definition. Hitting F5 to run is as easy 
as putting the cursor at the end of the statement and hitting Enter. And 
it runs multiple statements at once, not just one.

-- 
Terry Jan Reedy




More information about the Python-list mailing list