This Engineering Notebook post discusses trade-offs (unpleasant choices) that I have been considering lately. The purpose of this post is to acknowledge these choices and to move on. I am committing to nothing here.
The larger purpose is to free myself from the grip of urgent tasks so that I can see the big picture more clearly.
Unpleasant choices
As expected, doubts arose as soon as I declared that pyzo and Leo would remain forever separate. Sometimes I tell my subconscious/barely conscious mind to buzz off. But this is not one of those times.
The root of these doubts is the undeniable fact that pyzo does shells and debuggers better than Leo does. I've improved the python_console plugin lately, but pyzo's shell and debugger are clearly superior.
Would I embed pyzo's docks into Leo if I could just wave a magic wand? Yes, probably.
Alas, actually doing so would take a lot of work. The "Let's pretend it's easy" principle doesn't help! It was useful for ignoring implementation details in the design phase, but it offers no real assistance otherwise. Recall the fundamental dilemma. There are only two ways forward:
1. Import pyzo code and bend it to Leo's will.
2. Copy pyzo code into Leo and suffer all the ill effects of cut and paste.
Each would be a lot of work. Each is ugly in its own way.
One way to bridge the gap between Leo and pyzo would be to use Leo's
bridge inside pyzoic scripts. It's a cute trick, and it might be useful. It decreases the urgency of pyzo-related work.
Leo's past and future
I have done a lot of work in the past few years. I can look back without severe regrets. Having said that, few features truly moved Leo forward. The post script lists what I consider to be the real milestones in Leo's past.
Now we come to the rub. Yes, it would be possible to improve Leo in lots of ways. Would any of the present enhancements truly move Leo forward? I think not.
Summary
It's time to put aside the daily obsession with details and features and dream again.
Edward
P. S. Let's take a trip down memory lane, with the help of release notes. Here are the major features (imo) of each release:
5.0: November, 2014
vim mode, pylint command, and importers for org mode and vimoutline files.
5.1: April, 2015
@clean and structured @data nodes.
5.2: March, 2016
Clone-find commands, c.cloneFindByPredicate, and the make-stub-files script.
5.3: May 2016
Importer for Jupyter (.ipynb) files, and much faster spell checking.
5.4: October 2016
Rewrote the javascript importer.
5.5: March, 2017
Fixed the horrendous syntax coloring performance bug, and rewrote all of Leo's importers.
5.6: September, 2017
The console gui, and the git-diff command.
5.7.x: February, 2018 through May, 2018
pip install leo, themes, clickable links in the log pane and rewrote Leo's key-handling code.
5.8: August, 2018
Fast read-file code: the end of file caching.
5.9: May, 2019
Leo in a browser, syntax coloring with pygments, and TravisCI.
6.0: June, 2019
Transition to python 3 and Qt docks.
And that's it. Everything else is bug fixes, minor features, and whatever.
This list slights plugins and their authors a bit. Otoh, plugins rarely transform Leo.
EKR