Thomas has convinced me not to change Leo's session-handling code significantly. I have closed #3417 and its related PR: Leo will retain its session-* commands and related documentation.
However, Leonistas disagree about when to write session data (a list outlines). Some say, "Always." Others say, "Only if the command line had no outlines."
We usually do not argue about preferences. However, a per-outline setting won't do. And I refuse to add a command-line option to resolve this minor question.
What to do? It's a puzzle.
When I awoke this morning, I saw the way forward. I'll add an Easter Egg to Leo's startup and shutdown code. A tiny new plugin, modify_sessions, will exploit the hidden code. Like this:
1: Restore the g.app.loaded_session ivar, inited (as before) to False.
2: Add the g.app.always_write_session_data ivar, inited to True.
3: Change the shutdown logic in two places:
if g.app.sessionManager and (
g.app.loaded_session or g.app.always_write_session_data
):
g.app.sessionManager.save_snapshot()
4: Create the modifiy_sessions plugin, containing (sans docstrings) only:
def init():
g.app.always_write_session_data = False
Summary
Leo will retain its session-* commands and related documentation.
Leonistas disagree about when Leo should write session data. Some say, "Always." Others say, "Only if the command line had no outlines."
Neither a command-line option nor a per-outline setting can resolve this question.
I'll modify PR #3215 so that Leo always writes session data. Those who prefer otherwise can enable the modify_session plugin.
All your comments are welcome.
Edward