Trisha Shetty (Editor)

Leo (text editor)

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Written in
  
Python

Size
  
~9 MB

Operating system
  
Cross-platform

Leo (text editor)

Developer(s)
  
Edward K. Ream, et. al.

Stable release
  
5.4.1 / October 24, 2016; 4 months ago (2016-10-24)

Type
  
Text editor, Outliner, IDE

Leo (Leonine Editor with Outlines) is an open source text editor/outliner that features clones (virtual copies of outline nodes) as its central tool of organization, navigation, customization and scripting.

Contents

Languages

Leo can manipulate text or code in any human or computer programming language (e.g., Python, C, C++, Java), as Leo is a language independent or "adaptable LPE" (literate programming environment). Syntax highlighting is provided for many different programming languages. Leo is written in Python and can be extended with plugins written in Python. The GUI uses the Qt toolkit; the syntax-aware editor is based on Scintilla. Leo outlines are stored as XML files.

Trees, clones and views

Leo's foremost functionality, in addition to text editing, is that of an outliner, with a "vast range of convenience features for structuring and managing outlines" both by drag-and-drop via GUI and by keyboard commands. Leo's outline pane shows a tree of data nodes. Nodes contain headlines, body text, and other information. Headlines naturally serve as descriptions of the body text. For example, @file nodes are nodes whose headline starts with @file. Leo trees are in fact directed acyclic graphs; nodes may have more than one parent. Leo calls such nodes clones. Clones appear in several places in the outline pane. Views are simply nodes whose children contain clones. A single outline may contain arbitrarily many views of the nodes contained therein.

Scripting

Leo's outline or hierarchical structure is distinct from the web of interleaved program and documentation "chunks" associated with classic literate programming tools. The body text of any Leo node may contain a Leo script, a Python script executed in the context of a Leo outline. A simple API gives Leo scripts full access to all data in loaded outlines, as well as full access to Leo's own source code. The API includes Python iterators that allow scripts to traverse outlines easily. Scripts may be composed of any tree of nodes. A markup language similar to noweb tells Leo how to create scripts from (parts of) an outline. Headlines control and guide scripts. Examples are:

  • @test nodes create unit tests. Leo executes the body of an @test node as a unit test, without the body having to create an explicit subclass of Python's UnitTest.TestCase class.
  • @button nodes create user-defined commands. Leo executes the script of an @button node in the context of any other outline node.
  • References

    Leo (text editor) Wikipedia