This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: IDLE parenmatch - left and right highlighting, independent flash-delay
Type: enhancement Stage: resolved
Components: IDLE Versions: Python 3.7, Python 3.6
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: terry.reedy Nosy List: terry.reedy, wohlganger
Priority: normal Keywords:

Created on 2017-06-21 13:23 by wohlganger, last changed 2022-04-11 14:58 by admin. This issue is now closed.

File name Uploaded Description Edit wohlganger, 2017-06-21 23:57 update parenmatch test
Pull Requests
URL Status Linked Edit
PR 2306 merged wohlganger, 2017-06-21 16:05
PR 2460 merged terry.reedy, 2017-06-28 02:44
PR 2822 louielu, 2017-08-04 02:46
Messages (12)
msg296554 - (view) Author: Charles Wohlganger (wohlganger) * Date: 2017-06-21 13:23
Sorry, I'm new to this, and I've done it out of order. Commit #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.
msg296578 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-21 20:00
On 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.

In a pull request, bpo-30723 should refer back to this issue, at least in a title.
msg296581 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-21 20:31
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?
msg296605 - (view) Author: Charles Wohlganger (wohlganger) * Date: 2017-06-21 23:57
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.
msg296612 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-22 01:08
Thanks. That gives me something to work with.
msg297058 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-27 17:17
The unlinked PR is a closed duplicate.  PR 2306 is the one being updated and reviewed.
msg297061 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-27 18:08
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'.
msg297063 - (view) Author: Charles Wohlganger (wohlganger) * Date: 2017-06-27 18:30
'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.
msg297070 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-27 19:10
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.
msg297141 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-28 02:36
New changeset fae2c3538ecbcdd37b6eca891c0815d2093c39e3 by terryjreedy (wohlganger) in branch 'master':
bpo-30723: IDLE -- Enhance parenmatch; add style, flash, and help (#2306)
msg297143 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-28 03:02
New changeset af68382f68b08a383e7064777cf817375681e434 by terryjreedy in branch '3.6':
[3.6] bpo-30723: IDLE -- Enhance parenmatch; add style, flash, and help (GH-2306) (#2460)
msg297151 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-28 04:54
Charles, thank you for the focused suggestion and patch.  If you are interested, #30422 reviews IDLE goals and current issues.
Date User Action Args
2022-04-11 14:58:48adminsetgithub: 74908
2017-08-04 02:46:50louielusetpull_requests: + pull_request3033
2017-06-28 04:54:22terry.reedysetstatus: open -> closed
resolution: fixed
messages: + msg297151

stage: test needed -> resolved
2017-06-28 03:02:21terry.reedysetmessages: + msg297143
2017-06-28 02:44:56terry.reedysetpull_requests: + pull_request2515
2017-06-28 02:36:26terry.reedysetmessages: + msg297141
2017-06-27 19:10:39terry.reedysetmessages: + msg297070
2017-06-27 18:30:50wohlgangersetmessages: + msg297063
2017-06-27 18:08:33terry.reedysetmessages: + msg297061
2017-06-27 17:17:46terry.reedysetmessages: + msg297058
versions: + Python 3.6
2017-06-27 17:12:23terry.reedysetpull_requests: - pull_request2366
2017-06-22 01:08:53terry.reedysetmessages: + msg296612
2017-06-21 23:57:03wohlgangersetfiles: +

messages: + msg296605
2017-06-21 20:31:09terry.reedysetmessages: + msg296581
2017-06-21 20:01:39wohlgangersetpull_requests: + pull_request2366
2017-06-21 20:00:32terry.reedysetmessages: + msg296578
stage: test needed
2017-06-21 16:05:12wohlgangersetpull_requests: + pull_request2363
2017-06-21 16:04:59wohlgangersetpull_requests: - pull_request2362
2017-06-21 16:04:41wohlgangersetpull_requests: + pull_request2362
2017-06-21 13:23:10wohlgangercreate