[issue33610] IDLE: Make multiple improvements to CodeContext

Terry J. Reedy report at bugs.python.org
Thu May 24 14:20:18 EDT 2018


Terry J. Reedy <tjreedy at udel.edu> added the comment:

With #33628 merged, I consider the next priorities to be 5. #22703 (overt bug, highest), 7, and 8, to make the feature more usable.

10. is a vague speculative feature that would use get_indent_firstword but would actually be for the editor.  Update problem: It requires a representation of the structure of the entire code, and any edit could change that.  The saving grace of code context is that it only maintains information about the invisible lines above the cursor.

More feasible than item 10 would be

14. Block structure navigation: As near as I can tell, Alt-arrowkey is currently the same as arrowkey.  Have Alt-Up and Alt-Down move to the next block line above or below with the same indent and Alt-Left, Alt-Right move up and out (smaller indent) or down and in (larger indent).

15. (Instead of 4b. One font loop for class.) Replace font loop with font-change notification by the editor when the editor gets such a notification (which is very rare).

16. (Instead of 4a. One font loop for class.)  The current loops update every window 10 times a second, which is about the upper limit for a great typist or normal scroller.  But only an active editor window needs updating, and there is at most 1.  Most checks are wasted.

16A. Replace update loop with notification of visible display changes.  Pro: We already monitor key and mouse actions.  Anti: the event loop is simple.

16B. Only run update loop in active window.  Anti: I don't think we currently monitor window focus.  Pro: if we don't, we will need to for a multipane, multitab IDLE.  (Stopping should be easy: check status before after call in callback.  This automatically does a last update after focus gone.)

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue33610>
_______________________________________


More information about the Python-bugs-list mailing list