• Guido van Rossum's avatar
    Tim Peters again: · bbaba854
    Guido van Rossum yazdı
    The new version (attached) is fast enough all the time in every real module
    I have <whew!>.  You can make it slow by, e.g., creating an open list with
    5,000 90-character identifiers (+ trailing comma) each on its own line, then
    adding an item to the end -- but that still consumes less than a second on
    my P5-166.  Response time in real code appears instantaneous.
    
    Fixed some bugs.
    
    New feature:  when hitting ENTER and the cursor is beyond the line's leading
    indentation, whitespace is removed on both sides of the cursor; before
    whitespace was removed only on the left; e.g., assuming the cursor is
    between the comma and the space:
    
    def something(arg1, arg2):
                       ^ cursor to the left of here, and hit ENTER
                   arg2):   # new line used to end up here
                  arg2):    # but now lines up the way you expect
    
    New hack:  AutoIndent has grown a context_use_ps1 Boolean config option,
    defaulting to 0 (false) and set to 1 (only) by PyShell.  Reason:  handling
    the fancy stuff requires looking backward for a parsing synch point; ps1
    lines are the only sensible thing to look for in a shell window, but are a
    bad thing to look for in a file window (ps1 lines show up in my module
    docstrings often).  PythonWin's shell should set this true too.
    
    Persistent problem:  strings containing def/class can still screw things up
    completely.  No improvement.  Simplest workaround is on the user's head, and
    consists of inserting e.g.
    
    def _(): pass
    
    (or any other def/class) after the end of the multiline string that's
    screwing them up.  This is especially irksome because IDLE's syntax coloring
    is *not* confused, so when this happens the colors don't match the
    indentation behavior they see.
    bbaba854
PyShell.py 22.4 KB