What’s New in Leo¶
- What’s new in Leo 5.5
- What’s new in Leo 5.4
- What’s new in Leo 5.3
- What’s new in Leo 5.2
- What’s new in Leo 5.1
- What’s new in Leo 5.0
- What’s new in Leo 4.11
- What’s new in Leo 4.10
- What’s new in Leo 4.9
- What’s new in Leo 4.8
- What’s new in Leo 4.7
- What’s new in Leo 4.6
- What’s new in Leo 4.5
- What’s new in Leo 4.4.8
- What’s new in Leo 4.4.7
- What’s new in Leo 4.4.6
- What’s new in Leo 4.4.5
- What’s new in Leo 4.4.4
- What’s new in Leo 4.4.3
- What’s new in Leo 4.4.2
- What’s new in Leo 4.4.1
- What’s new in Leo 4.4
- Optionally run pyflakes when saving files.
- Fixed huge performance bug in syntax coloring. The horrible big text hack is no longer needed.
- Leo no longer hangs waiting for the pylint command to finish.
- Added four new generators: c.all_roots, c.all_unique_roots, p.nearest_roots and p.nearest.
- Created singleton BackgroundProcessManager
- Integrated idle-hook processing into the IdleTimeManager
- You can open all important .leo files from the File menu.
- <Alt-X>99 is the same as <Alt-G>99.
- Script abbreviations are allowed in headlines.
- The markdown importer now regularizes sections.
- @bool autojustify-on-at-start
- @bool color-doc-parts-as-rest
- @bool run-pyflakes-on-write
- @bool tree-declutter = True
- @data tree-declutter-patterns
- The clone-find commands are a new way to use Leo.
- The clone-find and tag-all-children commands unify clones and tags.
- The pyflakes and flake8 make it possible to check files from within Leo.
- Added importers for freemind, mindjet, json and coffeescript files.
- Imported files can optionally contain section references.
- Improved the mod_http plugin.
- The viewrendered plugin supports @pyplot nodes.
All known bugs have been fixed.
Added these commands:
The extremely important clone-find commands:
- clone-find-all (cfa)
- clone-find-all-flattened (cfaf)
- clone-find-all-flattened-marked (cffm)
- clone-find-all-marked (cfam)
- clone-find-tag (cft)
The pylint and pyflakes commands now write to Leo’s log window, as well as the console.
Improved the clone-marked/copy-marked/move-marked commands.
Removed all static abbrev commands. Removed all chapter-* commands except the chapter-select and chapter-select-main commands.
- Added installer for file associations.
- Leo now colorizes basestring, @staticmethod & @classmethod.
- Added dialog when creating myLeoSettings.leo automatically.
- Added support for auto-justified body text.
- Added @button import-tab-files to scripts.leo: https://groups.google.com/forum/#!topic/leo-editor/YcT7SOSYEQk
- @chapter trees need no longer be children of @chapters nodes.
- Fixed bug in NSIS installer. The old code failed to find Python installations in the 64-bit Windows registry.
Leo 5.3-final released May 2, 2016.
- Leo now supports Jupyter Notebook (.ipynb) files.
- @chapter is now allowed anywhere. No need for @chapters.
- Faster spell checking.
- The rst3 command supports @rst-table.
- The show-invisibles command now uses native Qt characters.
- Added clean-at-clean-files and clean-at-clean-tree commands.
- Added python-to-coffeescript command.
- Better defaults for open/save file dialogs.
- Improved clone-find commands.
- Improved kill & yank commands.
Leo 5.2-final release March 18, 2016 Easy install with PyInstaller packaging c.cloneFindByPredicate clone-find-marked commands: cfam (clone-find-all-marked) cffm (clone-find-all-flattened-marked) decorators create all Leo commands find-def and find-var help-for-keystroke Optional line numbers in the left gutter show-invisibles uses Qt characters --ipyhon command-line option works with latest IPython versions Themes Wildcard file names on Leo's command line
cfa, cff, cfam, cfam clear-log clone-to-at-spot Ctrl-x & Ctrl-C cut/copy the entire line if no text is selected find-all now writes to the body of a new top-level node find-def and find-var flatten-outline-to-node goto-next-clone falls back to find-next-clone help-for-keystroke kill commands cut selected text show-invisibles uses Qt characters vim-open-file @beautify and @nobeautify
Abbreviations now support auto-close quotes https://groups.google.com/d/msg/leo-editor/yJLz-p3I4mY/Pqa1phYN_10J Ctrl-G resets status line declutter node: substituting icons for @clean, @file, etc. Find commands now show status New menu: Settings: Edit Settings https://groups.google.com/d/msg/leo-editor/pM8aVJ1D6ao/Z8lq43t7FAAJ New menu: File:Print Optional line numbers in the left gutter Themes Wildcard file names on Leo's command line
leoOPML.py plugin mod_http.py plugin can control Leo remotely (https://groups.google.com/d/msg/leo-editor/wWWUgfDhPi4/VmRRRa_xDAAJ) make_stub_files.py script creates stub (.pyi) files https://github.com/edreamleo/make-stub-files python_to_coffescript.py script converts .py files to .coffee files https://github.com/edreamleo/python-to-coffeescript
@bool find-ignore-duplicates @bool preload-find-pattern @bool syntax-error-popup @bool use_find_dialog @bool use_gutter = True @color find-found-bg = blue @color find-found-fg = white @color find-not-found-bg = red @color find-not-found-fg = white @color gutter-bg = @LightSteelBlue1 @color gutter-fg = black @data abbreviations-subst-env now allows Leo directives @data history-list @data qt-gui-user-style-sheet (https://github.com/leo-editor/leo-editor/issues/183) @ifenv @ifplatform & @ifhostname (improved) @int gutter-w-adjust = 12 @int gutter-y-adjust = 10 @language coffeescript @string gutter-font-family = @font-family @string gutter-font-size = @small-font-size @string gutter-font-style = @font-style @string gutter-font-weight = @font-weight
Leo 5.1 b2 released April 10, 2015. @clean outlines create external files without sentinels. Leo regularly checks the integrity of the outline. Up/Down arrows in the minibuffer cycle though command history. http://leoeditor.com/load-leo.html displays .leo files in the browser. Leo now honors @language inside @doc parts. @data nodes can now be composed from a tree of nodes. This feature appeared in Leo 5.0, but was not documented. Added @int qt-cursor-width setting. Added g.IdleTime & LeoQtGui.IdleTime.
@bool make-node-conflicts-node goto-global-line prefers to find a node *outside* any @<file> tree. Added unformat-paragraph.
Added nodes-dark icons & stylesheet. (https://groups.google.com/d/msg/leo-editor/BrruEaWaX4Y/A0g4HQFvNtAJ) Added --diff command-line option. @auto persistence enabled if and only if an @persistence node exists. @auto style parse on first @clean 'Refresh From Disk' (https://github.com/leo-editor/leo-editor/issues/148) Added LeoReleaseNotes.leo. Improved messages when find commands fail. Improved <?xml-stylesheet>. Added g.getLanguageAtPosition. Should have been done long ago.
@clean is a long-sought breakthrough. For the first time, Leo can be used in all situations without compromise. There is no longer any need to make excuses for sentinel lines, or argue whether people should accept them. Sentinels are simply gone.
Leo updates @clean trees using a simplified version of the Mulder update algorithm previously used to update @shadow trees. This algorithm is easy to understand, provably correct and completely documented. It may be of interest to the developers of other outliners.
Leo 5.0 final released November 24, 2014 Better compatibility with vim, Emacs, pylint and PyQt: Optional native emulation of vim commands Full support for Emacs org-mode outlines Better support for pylint Support for both PyQt4 and PyQt5 Better handling of nodes containing large text: Idle time syntax coloring eliminates delay Optional delayed loading of large text Power features: File name completion Cloned nodes expand and contract independently @data nodes can be composed from descendant nodes Leo's main style sheet can be customized with @color and @font settings @persistence nodes save data in @auto trees Leo now uses pluggable architecture for @auto nodes <Alt-X><tab> shows all commands Leo's beautify commands now uses PythonTidy by default New plugins for tagging, display and node evaluation Leo's default workbook files contains Leo's quickstart guide
Idle-time commands: disable-idle-time-events disable-idle-time-tracing enable-idle-time-events enable-idle-time-tracing toggle-idle-time-events toggle-idle-time-tracing Spell as you type commands: spell-as-you-type-toggle spell-as-you-type-next spell-as-you-type-undo Other commands: clone-find-parents clone-to-last-node flatten-outline-to-node focus-to-find focus-to-spell help-for-drag-and-drop insert-file-name pylint style-reload
--no-persist and --trace-plugins command-line options Optional warning buttons when selecting large text Added support for delegate languages Added support for the dart language Added leo/external/leoftsindex.py
A plugable architecture for @auto nodes¶
The leo/plugins/importers folders now contains importer plugins.
The leo/plugins/writers folders now contain writer plugins.
Both importer and writer plugins can defined new kinds of @auto nodes.
Importers and writers can register either @auto-names or file extensions. For example, @auto x.xyzzy will use both the importer and the writer for the .xyzzy extension, that is, importers/test.py and writers/test.py. So, for unique extensions, there is no need to use a separate @auto name, you can just use @auto.
Most plugins now work with PyQt5 Rewrote at_produce.py Added livecode.py Added nodetags.py Added viewrendered2.py Added wikiview.py
Added settings that control PythonTidy-based beautify command: @bool use_python_tidy = True @bool tidy_add_blank_lines_around_comments = True @bool tidy_double_quoted_strings = False @bool tidy_keep_blank_lines = True @bool tidy_left_adjust_docstrings = False @int tidy_lines_before_split_lit = 2 @int tidy_seps_before_split_line = 8 Other settings: Added @bool auto-scroll-find-tab Added support for html handlebar syntax coloring Leo's main style sheet is fully parameterized Leo stylesheets now support all color names in leoColor.py
Leo 4.11 final released November 6, 2013 Leo's tutorials have been rewritten and simplified Greatly improved abbreviations, including templates Clones are now valid anywhere in @file nodes Leo now warns if a .leo file is open elsewhere Leo's IPython bridge now works with IPython 1.x Added support for @testsetup and @testclass Added support for sessions Added colorizing themes A colored border highlights the pane with focus Added support for the clojure, markdown and TypeScript languages Added importers for .ipynb, .otl and vimoutliner files
go-anywhere (quicksearch plugin) help-for-abbreviations help-for-dynamic-abbreviations help-for-find-commands help-for-regular-expressions insert-node-before leoscreen-jump-to-error normalize-whitespace parse-body print-buttons vr-expand & vr-contract. All viewrendered commands now start with vr zoom-in/out commands
--no-plugins command-line option @wrap now suppresses horizontal scrolling Added importers for .otl, .ipnyb, TypeScript and vimoutliner Added sublime Text 2, a dark colorizing theme Added support for @testsetup and @testclass Added syntax coloring for clojure language Added yes-to-all button when prompting for dangerous writes Allow periods before section names in headlines Border color changes depending on input state Clones are now valid anywhere in @file nodes Fully supported `:`: convention in @mode nodes Help commands now use <pre> formatting if docutils is not available Leo issues a warning if the same .leo file is open in another Leo instance Show all commands after <alt-x><tab> Major additions to abbreviations, including templates
leomylyn.py markup_inline.py printing.py richtext.py rss.py screen_capture.py screencast.py timestamp.py
By Terry Brown: Add @script node Cross-outline node editing Export full contents Full tree view (See the discussion in the child) Indexing files for full text search Persistent state with json as a leo abbreviation Tool for diffing Leo files By Edward K. Ream: Cleanup imported nodes Create global data structures from in modes/*.py files Get all comments from modes (slow) Import org mode jinja2 templating Recursive import script By Brian Theado: Display function call hierarchy in Leo
Leo 4.10 final released March 29, 2012 Detached windows Major improvements to Leo's abbreviations
beautify-c c-to-python clone-find-all-flattened clone-marked-nodes delete-marked-nodes move-marked-nodes run-marked-unit-tests-externally run-marked-unit-tests-locally select-to-matching-bracket split-defs
Leo 4.9 final released June 21, 2011 The Qt gui completely replaces Tk gui Nodes may contain multiple @language directives Unified extract and import commands Greatly improved the autocompleter The rendering pane displays movies, html, svg images, etc.
Commands now have common prefixes: abbrev- abbreviation commands apropos- help buffer- buffer command ddabrev- dynamic abbreviations directory- director commands file- file commands find- find commands gc- garbage collection isearch- incremental search macro- macro expansion print- print information rectangle- rectangle commands register register commands run- run unit tests toggle- toggle settings yank- yank The import-file commands replaces all the following commands: import-at-file import-cweb-files import-derived-file import-flattened-outline import-noweb-files Commands related to uA's: clear-all-uas clear-node-uas print-all-uas print-node-uas set-ua Other commands: insert-hard-tab insert-soft-tab replace-current-character command save-all toggle-abbrev-mode toggle-case-region
Added --no-splash, --script and --silent command-line options Leo highlights URL's everywhere Ctrl-clicking a URL's opens them in the browser Leo uses an @file node's extension if there is no @language directive Plain up/down arrow keys in headline-editing mode select a new node Added namespace directive to .leo files Added cython colorizing
Leo 4.8 final released November 26, 2010 New-style sentinels Drag and drop Improved abbreviations Spell checking based on PyEnchant Leo creates "Resurrected Nodes"
code-to-rst cascade-windows minimize-all-windows head-to-prev-node tail-to-next-node extract-python-method
Leo 4.7 final released February 23, 2010 The one-node world Leo now works with Python 3 & requires Python 2.6+ 'Recovered Nodes' nodes guard against clone conflicts
Leo 4.6 final released July 15, 2009 Cached external files Automatic syntax checking of .py files The Qt gui is now the default @auto-rst Added p.b, p.h and p.gnx; v.b, v.h and v.gnx properties Tab and Shift-Tab indent & unindent text
New --config, --file and --gui command-line options The open command creates @edit nodes when opening non-.leo files Leo opens a workbook if no file is given Predefined 'self' in @test/@suite nodes Escapes for underindented lines Improved Leo's unit testing framework New warnings for dangerous writes to @auto and @file nodes @nocolor-node directive qtGui and tkGui plugins
Leo 4.5 final released September 2, 2008 @shadow Improved Leo's key-binding code Improved support for vim bindings Allow v.uA's in @file and @shadow nodes Sax-based parser for .leo files Unified nodes Reorganized Leo's drawing and focus code: Removed calls to c.beginUpdate and c.endUpdate
delete-all-icons delete-first-icon delete-last-icon delete-node-icons insert-icon reverse-sort-lines reverse-sort-lines-ignoring-case sort-lines-ignoring-case toggle-collapse_nodes_during_finds
Leo 4.4.4 Final released November 2, 2007 The Great Graph Aha. See the History of Leo @auto @menus trees @buttons trees A faster colorizer plugin
check-derived-file check-leo-file compare-leo-outlines insert-child read-at-auto-nodes read-file-into-node write-at-auto-nodes write-dirty-at-auto-nodes write-file-from-node
Leo 126.96.36.199 final released October 29, 2006 The 'big reorg': vnode and tnode classes are independent of Leo's core Support for ZODB in the vnode and tnode classes The find command closes nodes behind it
extend-to-line extend-to-paragraph extend-to-sentence forward-end-word forward-end-word-extend-selection
Leo can be called from Emacs: See the `Leo and Emacs` chapter Added support for middle-button paste Writing .leo files is about twice as fast as before Integrated sax with read logic Much faster navigation through the outline using Alt-arrow keys When focus is in the outline pane, you can move to headlines by typing the first letter of headlines The find command now closes nodes Leo is easier to use without using a mouse
Improved mod_scripting.py: Creates a command for every button The Script Button button creates the press-script-button-button command New plugins: leo_to_html.py leo_to_rtf.py paste_as_headlines.py slideshow.py word_count.py
Leo 4.4.1 final released August 30, 2006 Multiple editors in Leo's body pane A new colorizer plugin controlled by jEdit language description files Search commands now support regex replace patterns Support for external debuggers: http://leoeditor.com/debuggers.html
add-editor delete-editor cycle-editor-focus cycle-focus debug find-character find-word help-for-command hide-invisibles isearch-with-present-options open-users-guide python-help run-unit-test scroll-outline-left scroll-outline-right toggle-autocompleter toggle-calltips toggle-invisibles
Leo matching brackets \1, \2, etc. replacements are valid in regex searches \n and \t are valid in plain searches The shortcut for the replace-string command changes from the find command to the replace command
@abbrev settings @font settings Commands can be executed on entry to a mode Bindings that are active only in command, enter and insert key states New Settings: @bool autoindent_in_nocolor_mode @bool flash_matching_brackets @bool idle_redraw @bool trace_bind_key_exceptions @bool warn_about_redefined_shortcuts @color flash_brackets_background_color @color flash_brackets_foreground_color @int flash-brackets-delay @int flash_brackets_count @string close_flash_brackets @string open_flash_brackets @string editor_orientation
4.4 final released May 11, 2006 An Emacs-like mini-buffer Many new commands You can use Leo without using a mouse Flexible key bindings and input modes A tabbed log pane Autocompletion and calltips
activate-cmds-menu activate-edit-menu activate-file-menu activate-help-menu activate-outline-menu activate-plugins-menu activate-window-menu add-space-to-lines add-tab-to-lines clean-lines clear-selected-text click-click-box click-headline click-icon-box clone-find-all contract-and-go-right contract-body-pane contract-log-pane contract-outline-pane contract-pane double-click-headline double-click-icon-box dump-all-objects dump-new-objects expand-body-pane expand-log-pane expand-outline-pane expand-pane find-again find-all find-tab-find command find-tab-find-previous free-text-widgets fully-expand-body-pane fully-expand-log-pane fully-expand-outline-pane fully-expand-pane goto-first-sibling goto-global-line goto-last-sibling help help-for-command hide-body-pane hide-find-tab hide-log-pane hide-minibuffer hide-outline-pane hide-pane, open-find-tab open-find-tab open-outline-by-name (uses filename completion) open-spell-tab print-bindings print-commands re-search-backward re-search-forward remove-space-from-lines remove-tab-from-lines replace-string run-unit-test scroll-down scroll-down-extend-selection scroll-outline-down-line scroll-outline-down-page scroll-outline-up-line scroll-outline-up-page scroll-up scroll-up-extend-selection search-backward search-forward search-with-present-options set-find-everywhere set-find-node-only set-find-suboutline-only show-colors show-fonts show-minibuffer show-search-options simulate-begin-drag simulate-end-drag toggle-find-ignore-case-option toggle-find-in-body-option, toggle-find-in-headline-option toggle-find-mark-changes-option toggle-find-mark-finds-option toggle-find-regex-option toggle-find-reverse-option toggle-find-word-option and toggle-find-wrap-around-option toggle-mini-buffer verbose-dump-objects word-search-backward word-search-forward
Added script to update new copies of leoSetttings.leo from previous copies Made all edit command undoable Added colorizing support for Lua language Autocompletion and calltips Leo remembers the previous open directory User input modes Installed many standard bindings to leoSettings.leo Added support for @mode nodes Added modes/\*.xml to distribution Allow multiple key bindings to the same command Moved all scripts into scripts.leo Bound <Return> to end-edit-headline Created scripts.leo and unitTest.leo The tabbed log The Find tab replaces the old Find panel
Changed path to stylesheet in the rst3 plugin Fixed crasher in Word (and other) plugins Fixed problem with labels plugin Added the following commands for the groupoperations plugin: group-operations-clear-marked group-operations-mark-for-copy group-operations-mark-for-move group-operations-mark-for-clone group-operations-mark-target group-operations-operate-on-marked group-operations-transfer The scripting plugin now supports shortcuts in @button nodes: @button name @key=shortcut The scripting plugin now supports @command nodes: @command name @key=shortcut
New settings features: Per-pane bindings: command-name ! pane = shortcut Spelling settings replace the settings in spellpyx.ini @shortcuts nodes New settings: @bool allow_idle_time_hook @bool autocomplete-brackets @bool gc_before_redraw @bool minibufferSearchesShowFindTab @bool show_only_find_tab_options @bool show_tree_stats @bool trace_autocompleter @bool trace_bindings @bool trace_doCommand @bool trace_f.set_focus @bool trace_focus @bool trace_g.app.gui.set_focus @bool trace_gc @bool trace_gc_calls @bool trace_gc_verbose @bool trace_key_event @bool trace_masterClickHandler @bool trace_masterCommand @bool trace_masterFocusHandler @bool trace_masterKeyHandler @bool trace_minibuffer @bool trace_modes @bool trace_redraw_now @bool trace_select @bool trace_status_line @bool trace_tree @bool trace_tree_alloc @bool trace_tree_edit @bool useCmdMenu @bool useMinibuffer @bool use_syntax_coloring @color body_text_selection_background_color @color body_text_selection_foreground_color @color log_pane_Find_tab_background_color @color log_pane_Spell_tab_background_color, etc. @int max_undo_stack_size, @string trace_bindings_filter @string trace_bindings_pane_filter