Введение

Leo — это текстовый редактор и органайзер с открытым исходным кодом, в котором клоны (виртуальные копии узлов структуры) являются центральным инструментом организации, навигации, настройки и программирования.

Языки

Лео может манипулировать текстом или кодом на любом человеческом или компьютерном языке программирования (например, Python, C, C++, Java), поскольку Лео является языково-независимой или "адаптируемой LPE" (средой программирования, основанной на литературном подходе). Предусмотрено выделение синтаксиса для многих различных языков программирования. В панели обзора Лео отображается дерево узлов данных. Узлы содержат заголовки, основной текст и другую информацию. Заголовки естественно служат описанием основного текста. Например, узлы @file – это узлы, заголовок которых начинается с @file. Деревья Лео фактически являются направленными ациклическими графами; узлы могут иметь более одного родительского узла. Лео называет такие узлы клонами. Клоны отображаются в нескольких местах в панели обзора. Представления (views) – это просто узлы, чьи дочерние узлы содержат клоны. Один обзор может содержать произвольное количество представлений узлов, содержащихся в нем.

Внешние файлы

@file узлы представляют внешние файлы – файлы в файловой системе компьютера, отличные от файла конспекта. При сохранении конспекта Лео автоматически перезаписывает все измененные @file деревья во внешние файлы. Комментарии, называемые сигнальными строками, во внешних файлах представляют структуру конспекта. Когда Лео читает конспект, эти комментарии позволяют Лео воссоздать @file деревья, используя только данные из внешнего файла. @auto и @clean узлы представляют внешние файлы без использования сигнальных комментариев. При чтении @auto узлов Лео использует программную структуру внешнего файла для создания @auto дерева. При чтении @clean узлов Лео использует структуру конспекта для создания @clean дерева.

Сценарий

Контур или иерархическая структура Leo отличается от сети переплетенных фрагментов программы и документации, связанных с классическими инструментами литературного программирования. Тело любого узла Leo может содержать скрипт Leo – скрипт Python, выполняемый в контексте контура Leo. Простой API предоставляет скриптам Leo полный доступ ко всем данным в загруженных контурах, а также полный доступ к исходному коду Leo. API включает в себя итераторы Python, позволяющие скриптам легко обходить контуры. Скрипты могут состоять из любого дерева узлов. Язык разметки, аналогичный noweb, указывает Leo, как создавать скрипты из (частей) контура. Заголовки управляют и направляют выполнение скриптов. Например, узлы @button создают команды, определенные пользователем. Leo выполняет скрипт узла @button в контексте любого другого узла контура.