On Wednesday, February 21, 2018 at 1:39:52 AM UTC-6, Edward K. Ream wrote:

I wrote my last post in the middle of the night.  It shows :-)

After getting more sleep, and discussing the issues with Rebecca, more has 
become clear. Here is what I think I know for sure:

*No forks, but...*

Leo's code base can't be allowed to fork, but *that's not a big constraint*.

Indeed, standard Leo plugins could communicate with *external hosts* such 
atom, vscode, jupyter notebooks, eclipse, jEdit, etc.  Let's call these Leo 
python plugins *external gui plugins*. These Leo plugins would communicate 
with *host plugins* in the external hosts.  Host plugins could be written 
in javascript (atom, vscode) or java (Eclipse) or python (jupyter).

*All *gui plugins, external or not, create two way communication between 
the gui plugin (the screen) and Leo's core.  That's what makes *any* gui 
plugin difficult. Lockouts are usually needed. User actions create events 
in Leo's core. Those events must be prevented from creating further actions 
in the gui.

External gui plugins will communicate with the host plugins to do the 
actual drawing. When opening a .leo file, the external gui plugin would 
send a *representation *of the entire outline to host plugin.  json or cson 
should suffice.

The leoBridge will not change.  Instead, external gui plugins *might* 
launch a hidden version of Leo:

    python launchLeo.py --gui=vscode

Leo itself will remain *almost completely unchanged*. The console gui 
required about 10 benign new lines of code.  We should expect (require!) 
the same for any external gui plugin.

*What is Leo?*

- Vitalije asserts that @others is essential. I agree.

- The "no fork" rule means that Leo's core must remain unchanged.

- Python scripting access to Leo's code and data (c, g, p) is also 
essential.

Many people are leery even of python.  Forcing them to learn any variant of 
javascript is out of the question.  Support for any other scripting 
language would require shims.  We aren't going there.

*What do we want?*

- Not everyone will want to using an external program, no matter how glitzy.

- We must continue to improve the pure python version of Leo.

- The lure of web technology beckons.

- I'll continue to explore external hosts and their features.  An atom or 
vscode plugin may be next for me.

*Summary*

Plain Leo plugins (external gui plugins) should/must suffice to embed Leo 
in atom, vscode, eclipse or jupyter. They may be easier to do than Leo's 
console gui plugin!

Except for a few benign lines of code, Python's core will not change to 
support external gui plugins.

Leo's core, markup (@others, section references, directives) and python 
scripting are all part of Leo's essence.  They will not change.  And 
neither will any other essential part of Leo that I haven't mentioned ;-)

Work will continue "forever" on improving the pure python version of Leo.  
This may include work on all the cool features we envy in atom! This is 
challenging work, even with access to the eric and pycharm code bases.

I will continue to explore options, including looking for nifty external 
hosts.  I would also like to do one external gui plugin as a learning 
exercise.

Please keep your comments coming. Feel free to vote for the external gui 
plugin you most want to see.

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 post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.

Reply via email to