Here's one I use and it works fine.  You should set up for undoing after an 
insert, and this script does that too:

"""Insert a node with id and creation timestamp strings"""

c.doCommandByName('insert-node')
undoType = 'xx-insert-node'
p.moveToNext()
w = c.frame.body.wrapper

oldSel = w.getSelectionRange()
w.deleteTextSelection()
w.setInsertPoint(0)

id_label = f':id: {p.gnx}\n'
time_string = ':created: ' + c.getTime(body=True) + '\n'
i = w.getInsertPoint()
w.insert(i, f'{id_label}{time_string}')

c.frame.body.onBodyChanged(undoType, oldSel=oldSel)
c.bodyWantsFocusNow()

On Sunday, July 28, 2024 at 8:40:32 AM UTC-4 jkn wrote:

> I'm being a bit dim here, but:
>
> I am writing a simple command to append text to the body of a node. The 
> only commands I have written before set the entire body text to some value.
>
> What do I have to call after using w.insert() etc. to make these changes 
> persistent.?
>
> c.redraw() does not seem to do the trick.
>
> The (outdated?) scripting miscellany: 
> https://leo-editor.github.io/leo-editor/scripting-miscellany.html
>
> suggests that c.frame.body.onBodyChanged should be called; but it looks 
> like this is not longer the case.
>
> A trivial example (that I do not seem to be able to find) would be helpful 
> - thanks.
>
> w = c.frame.body.wrapper
> for line in range(10):
>     w.appendText("%d\n" % line)
>
> # now what?
>
>     J^n
>
>

-- 
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 leo-editor+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/bd601008-efc4-4daa-96d5-c8a7bd723b96n%40googlegroups.com.

Reply via email to