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 parenmatch - left and right highlighting, independent flash-delay #74908

Closed
wohlganger mannequin opened this issue Jun 21, 2017 · 12 comments
Closed

IDLE parenmatch - left and right highlighting, independent flash-delay #74908

wohlganger mannequin opened this issue Jun 21, 2017 · 12 comments
Assignees
Labels
3.7 (EOL) end of life topic-IDLE type-feature A feature request or enhancement

Comments

@wohlganger
Copy link
Mannequin

wohlganger mannequin commented Jun 21, 2017

BPO 30723
Nosy @terryjreedy, @wohlganger
PRs
  • bpo-30723: Enhancement to IDLE parenmatch extension #2306
  • [3.6] bpo-30723: IDLE -- Enhance parenmatch; add style, flash, and he… #2460
  • bpo-19903: IDLE: Calltips changed to use inspect.signature #2822
  • Files
  • test_parenmatch.py: update parenmatch test
  • 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 2017-06-28.04:54:22.634>
    created_at = <Date 2017-06-21.13:23:10.624>
    labels = ['expert-IDLE', 'type-feature', '3.7']
    title = 'IDLE parenmatch - left and right highlighting, independent flash-delay'
    updated_at = <Date 2017-08-04.02:46:50.031>
    user = 'https://github.com/wohlganger'

    bugs.python.org fields:

    activity = <Date 2017-08-04.02:46:50.031>
    actor = 'louielu'
    assignee = 'terry.reedy'
    closed = True
    closed_date = <Date 2017-06-28.04:54:22.634>
    closer = 'terry.reedy'
    components = ['IDLE']
    creation = <Date 2017-06-21.13:23:10.624>
    creator = 'wohlganger'
    dependencies = []
    files = ['46967']
    hgrepos = []
    issue_num = 30723
    keywords = []
    message_count = 12.0
    messages = ['296554', '296578', '296581', '296605', '296612', '297058', '297061', '297063', '297070', '297141', '297143', '297151']
    nosy_count = 2.0
    nosy_names = ['terry.reedy', 'wohlganger']
    pr_nums = ['2306', '2460', '2822']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'enhancement'
    url = 'https://bugs.python.org/issue30723'
    versions = ['Python 3.6', 'Python 3.7']

    @wohlganger
    Copy link
    Mannequin Author

    wohlganger mannequin commented Jun 21, 2017

    Sorry, I'm new to this, and I've done it out of order. Commit bpo-2306 covers the following:

    In IDLE, parenmatch extension:
    Add highlighting left and right parens to styles.
    Make flash-delay setting independent of parens highlighting style. Currently, the flash-delay option only affects one of the two styles, but there is no good reason for it not to affect both.

    @wohlganger wohlganger mannequin added the 3.7 (EOL) end of life label Jun 21, 2017
    @wohlganger wohlganger mannequin assigned terryjreedy Jun 21, 2017
    @wohlganger wohlganger mannequin added topic-IDLE type-feature A feature request or enhancement labels Jun 21, 2017
    @terryjreedy
    Copy link
    Member

    On bugs.python.org tracker a number prefixed by '#' refers an issue number on this tracker. On the other hand, PR2306 or PR 2306 should do what you meant.

    https://docs.python.org/devguide/triaging.html#generating-special-links-in-a-comment

    In a pull request, bpo-30723 should refer back to this issue, at least in a title.

    @terryjreedy
    Copy link
    Member

    Hi Charles. Welcome to CPython development and its issue tracker. Everyone starts 'new at this'.

    Can you please describe, in detail, a simple, minimal example of how to invoke the existing behavior that you want to change, then what change you want to see. Behavior change patches should be accompanied by a test that fails before the patch and passes after it is applies. Such a description is the basis for a new test.

    The test for idlelib.parenmatch is in idlelib.idle_test.test_parenmatch. Can you see if you can make sense of the existing tests and if you have any idea how to add a new one?

    @wohlganger
    Copy link
    Mannequin Author

    wohlganger mannequin commented Jun 21, 2017

    There are two changes:
    First - The flash-delay option is for how until the parens that are highlighted will stop highlighting. The flash-delay option for the ParenMatch only affects the 'default' style. Similarly the 'expressions' style does not use the flash-delay option and will not stop highlighting until input is given to IDLE. Desired behavior is for the flash-delay option to work for both styles, and setting flash-delay to 0 will cause the input required behavior that is currently only used by the 'expressions' style.

    I couldn't find anything in the test suite for testing the delay behavior specific to styles, only that the timer works in general, so I'm not sure how to test it other than just observing it. The test did not seem to cover if 'default' style worked properly using the 'show surrounding parens' command. I have added that to all style tests.

    Second - There is no style for highlighting the opening and closing parens. The new behavior is to write 'parens' (without ticks) for the style option, apply/ok the options, restart IDLE, and make a statement with parens, and it highlights both parens.

    The uploaded parenmatch test file covers the parens style, ensuring it works correctly.

    @terryjreedy
    Copy link
    Member

    Thanks. That gives me something to work with.

    @terryjreedy
    Copy link
    Member

    The unlinked PR is a closed duplicate. PR 2306 is the one being updated and reviewed.

    @terryjreedy
    Copy link
    Member

    I have compared current behavior with you explanation and I agree on the enhancement. 'parens' seems more useful than 'default'.

    'default' is a misnomer for current IDLE since the current default in config-extensions.def is 'expression', not 'default', I am inclined to add synonym such as 'opener'. Do you have another suggestion?

    On the todo list, the first item is covered by the newish Extensions tab, and should be removed. What the tab lacks is input validation. Immediately, pressing [Help] when on the Extensions tab should display text than included the parenmatch styles and the meaning of delay 0. I will add this.

    The second item mentions other Emacs stuff. Just curious, do you know if 'parens' is part of this? The 'below' just mentions the 'highlight when cursor returns issue'.

    @wohlganger
    Copy link
    Mannequin Author

    wohlganger mannequin commented Jun 27, 2017

    'opener' sounds fine to me. I agree it makes much more sense than 'default'.

    I don't know much about Emacs, and couldn't find what their parens highlighting styles were. I can't think of anything sensible that isn't in this extension with this enhancement; apart from highlighting whenever the cursor is beside a parens.

    @terryjreedy
    Copy link
    Member

    I am working on revising the patch now, so don't push anything until I do. I will revise the docstring and add 'opener' and help and news file.

    @terryjreedy
    Copy link
    Member

    New changeset fae2c35 by terryjreedy (wohlganger) in branch 'master':
    bpo-30723: IDLE -- Enhance parenmatch; add style, flash, and help (bpo-2306)
    fae2c35

    @terryjreedy
    Copy link
    Member

    New changeset af68382 by terryjreedy in branch '3.6':
    [3.6] bpo-30723: IDLE -- Enhance parenmatch; add style, flash, and help (GH-2306) (bpo-2460)
    af68382

    @terryjreedy
    Copy link
    Member

    Charles, thank you for the focused suggestion and patch. If you are interested, bpo-30422 reviews IDLE goals and current issues.

    @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 topic-IDLE type-feature A feature request or enhancement
    Projects
    None yet
    Development

    No branches or pull requests

    1 participant