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: Display up to maxlines non-blank lines for Code Context #77823

Closed
csabella opened this issue May 25, 2018 · 16 comments
Closed

IDLE: Display up to maxlines non-blank lines for Code Context #77823

csabella opened this issue May 25, 2018 · 16 comments
Assignees
Labels
3.7 (EOL) end of life 3.8 only security fixes topic-IDLE type-feature A feature request or enhancement

Comments

@csabella
Copy link
Contributor

BPO 33642
Nosy @terryjreedy, @csabella, @miss-islington
PRs
  • bpo-33642: IDLE: Use variable number of lines in CodeContext. #7106
  • [3.7] bpo-33642: IDLE: Use variable number of lines in CodeContext. (GH-7106) #7332
  • [3.6] bpo-33642: IDLE: Use variable number of lines in CodeContext. (GH-7106) #7333
  • bpo-33642 and bpo-33679: Revise and condense blurbs #7500
  • [3.7] bpo-33642 and bpo-33679: Revise and condense blurbs (GH-7500) #7501
  • [3.6] bpo-33642 and bpo-33679: Revise and condense blurbs (GH-7500) #7502
  • 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 2018-06-08.21:55:04.359>
    created_at = <Date 2018-05-25.00:41:45.174>
    labels = ['3.8', 'expert-IDLE', 'type-feature', '3.7']
    title = 'IDLE: Display up to maxlines non-blank lines for Code Context'
    updated_at = <Date 2018-06-08.21:55:04.358>
    user = 'https://github.com/csabella'

    bugs.python.org fields:

    activity = <Date 2018-06-08.21:55:04.358>
    actor = 'terry.reedy'
    assignee = 'terry.reedy'
    closed = True
    closed_date = <Date 2018-06-08.21:55:04.359>
    closer = 'terry.reedy'
    components = ['IDLE']
    creation = <Date 2018-05-25.00:41:45.174>
    creator = 'cheryl.sabella'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 33642
    keywords = ['patch', 'patch']
    message_count = 16.0
    messages = ['317649', '317652', '317669', '317804', '317821', '317926', '318353', '318464', '318473', '318474', '318475', '318477', '318974', '318982', '318986', '318989']
    nosy_count = 3.0
    nosy_names = ['terry.reedy', 'cheryl.sabella', 'miss-islington']
    pr_nums = ['7106', '7332', '7333', '7500', '7501', '7502']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'enhancement'
    url = 'https://bugs.python.org/issue33642'
    versions = ['Python 3.6', 'Python 3.7', 'Python 3.8']

    @csabella
    Copy link
    Contributor Author

    Item 7 from bpo-33610:
    Change fixed # of lines to variable # of lines as needed, up to limit. About 15 is limit for 4-space indents in 80 char lines.

    • Change default number of lines to be 15 in config.
    • Label in config dialog.
    • Initialize context to be one blank line to show it's turned on.
    • Remove padding of blank lines.
    • Modify tests to show variable number of lines in context text instead of lines scrolling out of view.

    Tip: For manual tests, help.py works really well in viewing 15 lines.

    @csabella csabella added 3.7 (EOL) end of life 3.8 only security fixes labels May 25, 2018
    @csabella csabella added topic-IDLE type-feature A feature request or enhancement labels May 25, 2018
    @terryjreedy
    Copy link
    Member

    2 quick thoughts.

    1. I am not sure we can/should change the default, as it interacts with the recorded user changes for past versions. The default is that we never change defaults. (Having one user config for all Python/IDLE versions is a curse as well as a blessing. I anticipate having to do something different, sometime.

    2. I was thinking for '<top level>' instead of a blank line for when CC is on but there is no real context. I think we should try both and see what seems better in use while moving down through a file.

    @csabella
    Copy link
    Contributor Author

    I know we usually don't change defaults, but I had tested this one and I think it works. After I changed it to 15 lines in master, I opened the installed version of IDLE 2.7. Although it showed 15 fixed lines, it made sense since that was the number of lines in the 3.8 version.

    I figured a typical user would be using whichever version of IDLE comes with their current Python. So, at some point the OS would upgrade it and they would be moving from a version with fixed lines to a version with variable lines (for Python 3). If they had previously changed their settings, it would still use whatever they had changed it to as the limit, but now the context area would grow and shrink (so they would know the change exists). If they hadn't customized their settings, it would just change from 3 to 15.

    If the user switches between two versions (like when I tested with 2.7), then I think seeing the changes almost makes more sense to them. They can see it at 15 in the new version and watch it grow and shrink. Then it the 2.7 version, it looks the same, but without the expansion/contraction. It's a demonstration of what makes the variable sizing nice to have. Although it may lead to someone wanting it in 2.7. :-)

    Anyway, that was my thinking process. When you try it out, you may not agree, but it made sense to me when I saw what was happening.

    Note: one time this didn't quite work was when I set the line limit to 90. 3.8 worked great -- just like it had with 15 (that is, it never ate the whole editor window). But, under 2.7, it ate the whole window and without the reload in codecontext, changing the config didn't help until I restarted IDLE.

    @terryjreedy
    Copy link
    Member

    Unlinked duplicate PR entry. I have no idea how that could happen.

    @terryjreedy
    Copy link
    Member

    After testing the patch as a user, I would like 3 user-visible changes.

    1. Only display a blank line when there are no context lines.

    2. Replace the 'lines' option with a 'maxlines' option. There is no need to worry about, or explain to users (see 3.) the possible complications of reusing 'lines' with a different meaning.

    3. Add a 'maxlines' entry to the General tab help page. I will work on this either first or second.

    I will post other thoughts on the master issue, bpo-33610.

    @csabella
    Copy link
    Contributor Author

    I pushed a commit for these three items.

    @terryjreedy
    Copy link
    Member

    On Windows, I observe the following behaviors.

    1. When Code Context is enabled on a windows still at its initial height, context lines are added to code lines to increase the window height.

    2. When the window height is changed with a mouse, that becomes the fixed height, which is partitioned between context and code lines. In other words, context lines are taken from and given back to code lines.

    3. When height is maximized either with ZoomHeight or WindowMaximize, the behavior is as with 2. When height is un-maximized, behavior reverts to what it was, either 1 or 2.

    What do you see on Linux?

    @csabella
    Copy link
    Contributor Author

    csabella commented Jun 1, 2018

    I see similar behavior on Linux, except after maximizing and then minimizing, it seems to stay with option 2.

    @terryjreedy
    Copy link
    Member

    New changeset 29996a1 by Terry Jan Reedy (Cheryl Sabella) in branch 'master':
    bpo-33642: IDLE: Use variable number of lines in CodeContext. (GH-7106)
    29996a1

    @miss-islington
    Copy link
    Contributor

    New changeset 0800b6c by Miss Islington (bot) in branch '3.7':
    bpo-33642: IDLE: Use variable number of lines in CodeContext. (GH-7106)
    0800b6c

    @miss-islington
    Copy link
    Contributor

    New changeset a42fe3c by Miss Islington (bot) in branch '3.6':
    bpo-33642: IDLE: Use variable number of lines in CodeContext. (GH-7106)
    a42fe3c

    @terryjreedy
    Copy link
    Member

    I am leaving this open until the new behavior is documented, even though it might be part of another issue that includes other context changes.

    For this issue, I will leave what happens when unzooming unspecific.

    @terryjreedy
    Copy link
    Member

    Summary for users: Previously, Code Context displayed a fixed number of lines. Often, many were blank. Hence the default *numlines* to display was small, 3, to avoid having too many blank lines. However, 3 is often too small to display the complete context.

    Now, Code Context initially displays a single blank line for 'no context', to show that the feature is active. When the top visible line is part of an indented body, the context used as many non-blank lines as needed, up to a maximum of *maxlines*, which has a default of 15. Because a new configuration option is used, there should be no interference between user settings for old releases and future releases.

    Initially, context lines are added to an expanded editor window. When the height of the window has been maximized, perhaps with the zoomheight feature, and when the height of the window has been reset with the mouse, context lines replace normal code text.

    @terryjreedy terryjreedy changed the title IDLE: Use variable number of lines in CodeContext IDLE: Display up to maxlines non-blank lines for Code Context Jun 7, 2018
    @terryjreedy
    Copy link
    Member

    New changeset bed523b by Terry Jan Reedy in branch 'master':
    bpo-33642 and bpo-33679: Revise and condense blurbs (GH-7500)
    bed523b

    @miss-islington
    Copy link
    Contributor

    New changeset ab5da50 by Miss Islington (bot) in branch '3.7':
    bpo-33642 and bpo-33679: Revise and condense blurbs (GH-7500)
    ab5da50

    @miss-islington
    Copy link
    Contributor

    New changeset d071ab1 by Miss Islington (bot) in branch '3.6':
    bpo-33642 and bpo-33679: Revise and condense blurbs (GH-7500)
    d071ab1

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

    No branches or pull requests

    3 participants