PR #2826 <https://github.com/leo-editor/leo-editor/pull/2828/> greatly 
simplifies how Leo handles text indices.

This PR is a mass update. I have carefully compared diffs, all tests pass, 
mypy and pylint are happy, and I have been eating my own dog food without 
upset. Nevertheless, the PR may have introduced new bugs. Please report any 
problems immediately.

The PR contains a high-level summary in the first comment. However, the 
changes do not capture my excitement about the changes:

1. This PR took about 24 hours. This incredible productivity is the direct 
result of mypy checks. At last we are reaping the benefit of strong type 
checking.

2. Usually I have some notion of what the final code will look like. Not 
this time! Here is the list of the happy surprises:

- All indices *everywhere* are ints, not a Union.
- Leo's core knows *nothing* about g.toPythonIndex.
- g.toPythonIndex takes a *string* argument, not a Union!
- All calls to g.toPythonIndex occur within toInt local helper functions.
- It was *easy* to delete all the faux-helper x.toPythonIndex *methods.*

*Testing*

The PR removes the recently-introduced int_i, int_j, etc. vars. I have 
reviewed various kinds of diffs, including git-diff-pr between the 6.6.4 
and ekr-index branches. What stands out are the many missing calls to 
g.toPythonIndex.

However, Leo's unit tests don't cover qt_text.py. It would be possible to 
do so, but not straightforward.  See #2827 
<https://github.com/leo-editor/leo-editor/issues/2827>. In their absence I 
have relied on mypy, pylint, and code reviews. It's not enough :-)

*Summary*

The new code base is a spectacular simplification. We'll deal with bugs as 
they arise.

The difference between Union[int, str] and just int is hard to overstate. 
The new code should help the leoJS project considerably.

Edward

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/5cca4882-3983-4b2a-8d90-bb023f9cb2d3n%40googlegroups.com.

Reply via email to