Yesterday I discovered/invented a simple, important, way of organizing the 
results of clone-find searches.  The pattern is:

- --- name of search (an organizer node) (--- highlights the organizer node)
  - (clone) The node defining a method.
  - The result of the clone-find command, renamed NN calls to (the method)

For example:

- --- c.getBodyLines (helper: body.getSelectionLines)
  - (clone) c.getBodyLines
  - 10 Calls to getBodyLines

 The last node contains clones of all calls to c.getBodyLines.

The following tree helped me to understand that most of Leo's body-changing 
command eventually funneled through u.setUndoTypingParams:

- ----- Simplify body logic
  - --- c.getBodyLines (helper: body.getSelectionLines)
  - --- c.updateBodyPane (calls onBodyChanged)
  - --- LeoBody.onBodyChanged (calls setUndoTypingParams)
  - --- u.setUndoTypingParams (called by qtm.onTextChanged)

Each of the "---" organizer node contains children as shown above.

*What's the big deal, you ask?*

The "extra" level of organizer nodes (the --- nodes) allow for summarizing 
data* in the headlines* without changing any of the actual code nodes. 
Sure, body text of the --- nodes could contain more summary info, but being 
able to see the overall structure in *just* the outlines was important. 
With the big picture always visible, I could expand any --- node to see the 
method and the calls to it.

*Summary*

The pattern shown above revealed that many of Leo's body-changing commands 
eventually call u.setUndoTypingParams. It also shows that 
u.setUndoTypingParams is actually a callback for onTextChanged Qt events.

Without this pattern I struggled to understand the relationships between 
the various methods. With this method, everything suddenly became clearer.

HTH.

Edward

P.S. Today's post re undo 
<https://groups.google.com/d/msg/leo-editor/tTxHA0cbnTc/bicjIxN5AQAJ> 
convinces me that I *won't* attempt to remove kwargs from c.getBodyLines, 
c.updateBodyPane, LeoBody.onBodyChanged or u.setUndoTypingParams.

You could say that all of these methods are deprecated in favor of the 
upcoming u.before/afterChangeBody methods.* Leo would not be greatly 
improved by eliminating the deprecated methods.* There are many more 
important projects to do!

As a result, I have have added "(won't do)" to the node "----- Simplify 
body logic" :-) The only remaining task is to create and document 
u.before/afterChangeBody.

EKR

-- 
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/7c4a6484-8463-4c52-bd94-37d69e466db8o%40googlegroups.com.

Reply via email to