.. rst3: filename: html/preface.html
.. |---| unicode:: U+02015 .. for quotes
:trim:
.. |br| raw:: html
#############################
Technical introduction to Leo
#############################
.. Use full links here so links are active in LeoDocs.leo
.. _`clones`: tutorial-pim.html
.. _`leonine`: leonine-world.html
.. _`Python API`: tutorial-scripting.html
.. _`Scripting basics chapter`: tutorial-basics.html#scripting-basics
Leo puts hierarchy (outline structure) at the center of everything. This structure helps you create, manage, and revise any kind of document, including computer programs, documentation, to-do lists, and novels. Leo can write external files automatically from select parts of the outline.
Leo outlines may contain programs in any programming or markup language, including Python, C++, JavaScript, Rust, Markdown, and restructuredText.
**Multiple views of data**
Writers and programmers often want to view or manipulate the same text in different ways, depending on context. Leo's `clones`_ lets you create multiple different views of data within the *same* outline. You can organize code by functionality in one view and by file in another. You can see documentation from as many points of view as you like.
**Integrated Python Scripting**
Leo is fully scriptable in Python. Any outline node can contain a Python script that accesses the outline’s data directly. Such `leonine`_ scripts also have full access to all of Leo's source code via a straightforward `Python API`_. Leonine scripts and plugins can create new Leo commands. See Leo's `scripting basics chapter`_ for more details.
**Summary**
Traditional editors *simulate* hierarchy through comments, naming conventions, and the hierarchy of external files. In contrast, Leo puts hierarchy (outline structure) at the center of everything. As a result, Leo excels in managing complex text, including computer programs.