[Patches] [ python-Patches-1528468 ] PyShell.recall - fix indentation logic

SourceForge.net noreply at sourceforge.net
Tue Jul 25 18:07:48 CEST 2006


Patches item #1528468, was opened at 2006-07-25 19:07
Message generated for change (Settings changed) made by taleinat
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1528468&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: IDLE
Group: None
Status: Open
Resolution: None
>Priority: 3
Submitted By: Tal Einat (taleinat)
Assigned to: Nobody/Anonymous (nobody)
Summary: PyShell.recall - fix indentation logic

Initial Comment:
PyShell.recall uses wrong indentation logic when
recalling a block of code (more than one line).

It first inserts the first line and calls
newline_and_indent, which inserts a newline and indents
the next line according to heuristics - more indent
after ':', less after a return, etc. So far so good.

Afterwards, for each following line, it just inserts
line.strip(), and again calls newline_and_indent. This
often ruins the block's indentation, for instance at
the end of loops and 'if' blocks.

This can easily be improved upon since we have the
original indentation. This patch retains the block's
original indentation, only adjusting it to fit the
current base indentation level.

This patch also doesn't add an extra newline at the end
of a recalled block, unless there was on there originally.

I haven't tested it thoroughly but I have played around
with it a lot and tweaked it. So far it seems to work 100%.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1528468&group_id=5470


More information about the Patches mailing list