Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IDLE regression: toggle tabs and change indent width functions #82817

Closed
Zero mannequin opened this issue Oct 29, 2019 · 8 comments
Closed

IDLE regression: toggle tabs and change indent width functions #82817

Zero mannequin opened this issue Oct 29, 2019 · 8 comments
Assignees
Labels
3.7 (EOL) end of life 3.8 only security fixes 3.9 only security fixes topic-IDLE type-bug An unexpected behavior, bug, or error

Comments

@Zero
Copy link
Mannequin

Zero mannequin commented Oct 29, 2019

BPO 38636
Nosy @terryjreedy, @miss-islington
PRs
  • bpo-38636: Fix IDLE tab toggle and file indent width #17008
  • [3.8] bpo-38636: Fix IDLE tab toggle and file indent width (GH-17008) #17274
  • [3.7] bpo-38636: Fix IDLE tab toggle and file indent width (GH-17008) #17275
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = 'https://github.com/terryjreedy'
    closed_at = <Date 2020-03-27.19:26:20.457>
    created_at = <Date 2019-10-29.21:14:08.474>
    labels = ['3.8', 'expert-IDLE', 'type-bug', '3.7', '3.9']
    title = 'IDLE regression: toggle tabs and change indent width functions'
    updated_at = <Date 2020-03-27.19:26:20.456>
    user = 'https://bugs.python.org/Zero'

    bugs.python.org fields:

    activity = <Date 2020-03-27.19:26:20.456>
    actor = 'terry.reedy'
    assignee = 'terry.reedy'
    closed = True
    closed_date = <Date 2020-03-27.19:26:20.457>
    closer = 'terry.reedy'
    components = ['IDLE']
    creation = <Date 2019-10-29.21:14:08.474>
    creator = 'Zero'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 38636
    keywords = ['patch']
    message_count = 8.0
    messages = ['355678', '355701', '355712', '355737', '355738', '357033', '357034', '357035']
    nosy_count = 3.0
    nosy_names = ['terry.reedy', 'Zero', 'miss-islington']
    pr_nums = ['17008', '17274', '17275']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'behavior'
    url = 'https://bugs.python.org/issue38636'
    versions = ['Python 3.7', 'Python 3.8', 'Python 3.9']

    @Zero
    Copy link
    Mannequin Author

    Zero mannequin commented Oct 29, 2019

    In the latest Python 3.8.0 installation when running IDLE on Windows, pressing "Alt + T" generates the following error:

        Exception in Tkinter callback
        Traceback (most recent call last):
          File "C:\Program Files\Python38\Lib\tkinter\__init__.py", line 1883, in __call__
            return self.func(*args)
          File "C:\Program Files\Python38\Lib\idlelib\multicall.py", line 176, in handler
            r = l[i](event)
        TypeError: toggle_tabs_event() missing 1 required positional argument: 'event'

    Similarly, pressing "Alt + U" will generate a very similar error:

        Exception in Tkinter callback
        Traceback (most recent call last):
          File "C:\Program Files\Python38\Lib\tkinter\__init__.py", line 1883, in __call__
            return self.func(*args)
          File "C:\Program Files\Python38\Lib\idlelib\multicall.py", line 176, in handler
            r = l[i](event)
        TypeError: change_indentwidth_event() missing 1 required positional argument: 'event'

    @Zero Zero mannequin added OS-windows 3.8 only security fixes labels Oct 29, 2019
    @Zero Zero mannequin assigned terryjreedy Oct 29, 2019
    @Zero Zero mannequin added topic-IDLE type-bug An unexpected behavior, bug, or error labels Oct 29, 2019
    @terryjreedy
    Copy link
    Member

    Both the menu items and the short cuts for these two functions on the Format menu give these call errors. They are only visible if IDLE is started from a console.

    They work in 3.6; the regression is due to bpo-36390. These 2 functions were moved separately from the others in the 3rd PR, PR 14827, changeset 1b38922. I found the mistake and believe I have one possible version of a working fix on a new branch.

    The diff contains this comment:
    # With mixed indents not allowed, these are semi-useless and not unittested.
    I was thinking that they should be removed, but regardless, they should have been manually tested. However, in one test with 3.6, a mixed indent -- tab + 4 spaces following a 4 space tab -- did work, so I am not sure of the rule. I will try to add a unittest along with the fix.

    @terryjreedy terryjreedy added 3.7 (EOL) end of life 3.9 only security fixes and removed OS-windows labels Oct 30, 2019
    @terryjreedy terryjreedy changed the title "Alt + T" and "Alt + U" Broken in IDLE on Windows IDLE regression: toggle tabs and change indent width functions Oct 30, 2019
    @Zero
    Copy link
    Mannequin Author

    Zero mannequin commented Oct 30, 2019

    When I start IDLE and the shell window appears, my first task is to press "Alt + T" to change from using tabs to spaces and then "Alt + U" to change from using 8 spaces to 4. This allows code pasted from the shell into an editor window or other IDE to not require reformatting since those settings seem to be common for Python code. If the defaults for these settings were to be exposed in IDLE's settings under the General tab (maybe near the new "Show line numbers in new windows" checkbox), would it be best to make that request here or to open a new bug with an enhancement suggestion?

    @terryjreedy
    Copy link
    Member

    Interesting.  The result of making these changes is legal code looking like
    >>> if a:
        if b:
            c = 3
    This has been proposed as the way Shell should work, but rejected as likely too confusing to beginners as the indented code does not look indented compared to the line above.  The use of tabs for indents in Shell has long been considered a wart that is a 'least bad solution'.

    Please hold your proposals. I intend to solve the issue by moving the prompt to a shell sidebar and use the same indent in shell as in editors. bpo-37903 has a PR under review.

    @terryjreedy
    Copy link
    Member

    The old, long discussion of Shell indents is bpo-7676 and a preceding issue reference therein. My replacement is bpo-37892.

    The PR patch is simple enough to apply by to existing 3.7.5 and 3.8.0 installs.

    @terryjreedy
    Copy link
    Member

    New changeset b846247 by Terry Jan Reedy in branch 'master':
    bpo-38636: Fix IDLE tab toggle and file indent width (GH-17008)
    b846247

    @miss-islington
    Copy link
    Contributor

    New changeset 755caaa by Miss Islington (bot) in branch '3.7':
    bpo-38636: Fix IDLE tab toggle and file indent width (GH-17008)
    755caaa

    @miss-islington
    Copy link
    Contributor

    New changeset 1322439 by Miss Islington (bot) in branch '3.8':
    bpo-38636: Fix IDLE tab toggle and file indent width (GH-17008)
    1322439

    @ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    3.7 (EOL) end of life 3.8 only security fixes 3.9 only security fixes topic-IDLE type-bug An unexpected behavior, bug, or error
    Projects
    None yet
    Development

    No branches or pull requests

    2 participants