Leo User's Guide

Summary Table of Contents

Title Page
Table of Contents
Front Matter
FAQ
Chapter 1: Introducing Leo
Chapter 2: Installing Leo
Chapter 3: Using Leo's Outlines
Chapter 4: Writing Programs in Leo
Chapter 5: Using Leo's Commands
Chapter 6: Leo and Literate Programming
Chapter 7: Scripting Leo with Python
Chapter 8: Customizing Leo
Chapter 9: History of Leo
Chapter 10: Theory of Operation
Appendices

Complete Table of Contents

Title Page

Table of Contents

Front Matter

Preface
Acknowledgments
Leo's design goals
Legal notices

FAQ

What is the best way to learn to use Leo?
Where are the simple examples about how to use Leo?
How can I create JavaScript comments in derived files?
How can I make a derived file start with a shebang line?
What are the differences between @root and @file trees?
Why should I use clones?

Chapter 1: Introducing Leo

Overview of Leo
Leo's main window
Body text define chunks
Outlines organize chunks
Clones manage tasks
Outlines Generate Derived Files

Chapter 2: Installing Leo

System requirements
Installing leo.py
Installing the Windows version of Leo
Installing Leo on MacOS X Jaguar
Quick start

Chapter 3: Using Leo's Outlines

Creating headlines
Cutting and pasting headlines
Expanding and contracting headlines
Moving, dragging and reorganizing headlines
Marking headlines
Opening URL's automatically
Cloning headlines
Resizing panes
Undoing operations

Chapter 4: Writing Programs in Leo

Overview
Sections and section definitions
Organizing @file trees 
More about directives
@color and @nocolor control syntax coloring
@comment sets comment delimiters in @root and @unit trees
@delims sets sentinel delimiters in @file trees
@encoding specifies encoding in derived files
@first and @last allow leading and trailing lines in @file trees
@language specifies the target language
@path, @pagewidth and @tabwidth set preferences

Appendix 1 to Chapter 4: Using @rawfile and @silentfile Trees

Appendix 2 to Chapter 4:Using @root Directives, Tangling and Untangling

@file vs. @root trees
Sections and section definitions
Tangling @root trees with the Tangle commands
Untangling @root trees with the Untangle commands
@verbose, @terse, @quiet and @silent directives

Chapter 5: Using Leo's Commands

The File Menu
Loading, saving and restoring files
Communicating with external editors
Tangling an outline: producing derived files
Tangling and untangling: the interface with the IDE
Untangling: updating an outline
Import files into Leo
Exporting files from Leo
Quitting Leo
The Edit Menu
Cutting, pasting and selecting text
Executing Python scripts in body text
Shifting body text
Extracting sections from body text
Converting leading tabs and spaces in body text
Finding matching brackets and parentheses
Finding and changing text
Finding locations in outlines corresponding to line in derived files
Inserting the time and date
Reformatting paragraphs
Setting preferences and leoConfig.txt
The Outline Menu
Creating and deleting headlines
Cutting and pasting headlines
Expanding and contracting headlines
Moving and reorganizing headlines
Marking headlines
Cloning nodes
The Window Menu
Resizing panes
Cascading & minimizing windows
Toggling the active pane and the orientation of the Leo window
The Help Menu
Getting Leo's version
Reading documentation
Configuring Leo

Chapter 6: Leo and Literate Programming

Why I like literate programming
How Leo improves literate programming
How Leo changes the notion of literate programming

Chapter 7: Scripting Leo with Python

Overview
Getting commanders and frames
Getting and setting headline and body text
Traversing outlines
Updating the screen
Invoking commands from scripts
Getting and setting preferences
Functions for finding and changing text from scripts
Summary of the vnode class
Functions defined in leoGlobals.py
Redirecting output from scripts

Appendix to Chapter 7: Scripting the Borland version of Leo

Installing Python
Leo's Python window
Functions
The commands class
File menu commands
Edit menu commands
Outline menu commands
Window menu commands
Menu enablers
Commands Utilities
The LeoPyWindow class
The Preferences class
The vnode class

Chapter 8: Customizing Leo

Overview
Using leoConfig.txt
Using plugins and hooks
Security warnings
Using convenience routines
Using leoConfig.leo and leoConfig.txt
Security considerations
The danger of trusting code in shared .leo files
Don't use rexec!
Using plugins and hooks
About plugins
About hooks
Convenience routines for hooks
Convenience functions for periodic actions
Convenience methods for menus
Putting the Leo icon in Leo windows

Chapter 9: History of Leo

Beginnings
Versions, and more versions
Designing @file trees
Deciding to do Leo2
A prototype
User interaction
The write code
The read code
The load/save code
Attributes, mirroring and dummy nodes
Clones
Error recovery, at last

Chapter 10: Theory of Operation

Overview
Nodes
Drawing and events
Clones
Find and change commands
Tangle and untangle commands
Unicode
Unlimited undo

Appendices

Python code in leo.py
Error messages
Future directions
Glossary
Sentinel lines
Transferring Leo files between Macintosh and PC
Unicode notes
XML file format
XML file format 1
XML file format 2
An example Leo file
DTD