Thanks....this helps.

I played with it over the weekend and actually got to something that worked 
for what I was trying to accomplish, but this is more flexible and helps in 
starting to dig into the code.

I will keep asking questions as they come up.  

djc

On Saturday, 3 December 2016 15:41:21 UTC-7, Edward K. Ream wrote:
>
> On Sat, Dec 3, 2016 at 9:51 AM, djc <[email protected] <javascript:>> 
> wrote:
>
>> I would like to create an outline with several levels with a python 
>> script.
>>
>
> ​[snip]​
>  
>
>>
>> but I can find not find an example or documentation of how to promote or 
>> demote the outline level at the current position
>> ​.
>>
> ​
> There are several possible approaches to finding code in Leo.  All are 
> appropriate in one way or another.
>
> 1. Search.
>
> Just now, I knew that the command I wanted started with moveOutline.  ​I 
> searched for that in leoPy.leo and found c.moveOutlineDown, in the node 
> Code-->Core classes-->@file leoCommands.py-->class Commands-->c.Command 
> handlers-->Outline menu (commands)-->Move... (Commands)
>
> So, to do what you want, your script could do:
>
> c.moveOutlineRight(), assuming that the node to be moved is selected.  If 
> it isn't, c.selectPosition(p) will select it. 
>
> *Important*: the commander methods (c methods) are high-level commands.  
> They do the complete command, including redraw.
>
> Many times there are corresponding position methods (p methods).  These 
> are lower level and do not do a redraw.  That's often what you do want when 
> doing more complex operations.
>
> 2. Use typing completion.
>
> Typing <Alt-x> move-<tab> will show you lots of move commands, including 
> move-outline-right. You can execute any command by name this way:
>
> c.k.simulateCommand("command-name"),
>
> in this case,
>
> c.k.simulateCommand('move-outline-right')
>
> This will do the redraw automatically, because it invokes 
> c.moveOutlineRight().
>
> Leo's scripting tutorial <http://leoeditor.com/tutorial-scripting.html> 
> doesn't cover these basic things.  It probably should. Neither does Leo's 
> cheat 
> sheet <http://leoeditor.com/cheatsheet.html>, but the section called Moving 
> Outline Nodes <http://leoeditor.com/cheatsheet.html#moving-outline-nodes> 
> does tell you the *names* of the commands to do move outline nodes.  This 
> is a hint, which you can use in c.k.simulateCommand ;-)
>
> 3. Search for the command name in Leo.  Python decorators define all of 
> Leo's commands, so search for 'move-outline-down' in leoPy.leo will, 
> eventually get you to c.moveOutlineDown, just as in point 1 above.  The 
> quick way to search is to use the cff command ;-)
>
> HTH.  Besides these little tricks, it would probably be a good idea to 
> spend 10 or 15 minutes just looking through leoPy.leo.  Pay particular 
> attention to the files, and glance at the classes the files contain.  You 
> shouldn't try to remember much.  You just want to get a feel for the shape 
> of Leo's code.
>
> 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