<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Leo: http://leoeditor.com/leo_toc.html -->
<leo_file xmlns:leo="http://leoeditor.com/namespaces/leo-python-editor/1.1" >
<leo_header file_format="2"/>
<globals/>
<preferences/>
<find_panel_settings/>
<vnodes>
<v t="ekr.20070622214401"><vh>Startup</vh>
<v t="ekr.20111017082630.16086"><vh>Disabled buttons</vh>
<v t="ekr.20140912073148.19150"><vh>@@button body2settings</vh></v>
<v t="ekr.20111017082630.16080"><vh>@@button check-bindings</vh>
<v t="ekr.20111017082630.16081"><vh>defineSetNames</vh></v>
<v t="ekr.20111017082630.16082"><vh>doSet</vh></v>
<v t="ekr.20111017082630.16083"><vh>doShortcuts</vh></v>
<v t="ekr.20111017082630.16084"><vh>checkSets</vh></v>
<v t="ekr.20111017082630.16085"><vh>main</vh></v>
</v>
<v t="ekr.20110612074140.16414"><vh>@@button check-core-settings (OlD)</vh>
<v t="ekr.20110612074140.16417"><vh>ctor</vh></v>
<v t="ekr.20110612074140.16419"><vh>get_settings</vh></v>
<v t="ekr.20110612074140.16478"><vh>get_settings_nodes</vh></v>
<v t="ekr.20110612074140.16416"><vh>init</vh></v>
<v t="ekr.20110612074140.16415"><vh>run</vh></v>
</v>
<v t="tbrown.20140609102412.32426"><vh>@@button pick-date</vh></v>
<v t="ekr.20140912105440.19376"><vh>@@button reload-styles</vh></v>
</v>
<v t="ekr.20060112110750"><vh>Local buttons</vh>
<v t="ekr.20060112103537.17"><vh>@button check-bindings</vh>
<v t="ekr.20060112104119"><vh>defineSetNames</vh></v>
<v t="ekr.20060112104333"><vh>doSet</vh></v>
<v t="ekr.20060112105523"><vh>doShortcuts</vh></v>
<v t="ekr.20060112104333.1"><vh>checkSets</vh></v>
<v t="ekr.20060112104823"><vh>main</vh></v>
</v>
<v t="ekr.20090203131919.1"><vh>@button check-menus-cmds</vh></v>
<v t="ekr.20111006212449.11850"><vh>@button check-settings</vh>
<v t="ekr.20111006212449.11851"><vh>ctor</vh></v>
<v t="ekr.20111006212449.11852"><vh>check &amp; helper</vh>
<v t="ekr.20111007043902.15697"><vh>print_missing</vh></v>
</v>
<v t="ekr.20111006212449.11853"><vh>error</vh></v>
<v t="ekr.20111006212449.11854"><vh>get_commanders</vh></v>
<v t="ekr.20111006212449.11855"><vh>get_configs &amp; helpers</vh>
<v t="ekr.20111006212449.11856"><vh>get_configs_from_outline &amp; helper</vh>
<v t="ekr.20111006212449.11857"><vh>scan_for_configs</vh></v>
</v>
</v>
<v t="ekr.20111006212449.11858"><vh>get_settings &amp; helper</vh>
<v t="ekr.20111006212449.11859"><vh>is_setting</vh></v>
<v t="ekr.20111006212449.11860"><vh>parse_setting</vh></v>
</v>
<v t="ekr.20111006212449.11861"><vh>munge</vh></v>
<v t="ekr.20111006212449.11862"><vh>run</vh></v>
</v>
<v t="ekr.20140918165611.38050"><vh>@button color-wheel</vh></v>
<v t="tbrown.20140609102412.32428"><vh>@button pick-color-name</vh></v>
<v t="tbrown.20140609102412.32430"><vh>@button pick-font</vh></v>
</v>
<v t="ekr.20111026083456.16490"><vh>Local commands</vh>
<v t="ekr.20111026083456.16491"><vh>@command print-all-plugins</vh></v>
</v>
</v>
<v t="ekr.20041119035137"><vh>About this file, leoSettings.leo</vh>
<v t="ekr.20041122163623"><vh>About settings names</vh></v>
<v t="ekr.20041119035704"><vh> Basic setting nodes</vh>
<v t="ekr.20041119042929"><vh>@bool</vh></v>
<v t="ekr.20041119042929.1"><vh>@color</vh></v>
<v t="ekr.20041119044139"><vh>@directory</vh></v>
<v t="ekr.20041119042929.3"><vh>@encoding</vh></v>
<v t="ekr.20041119042929.4"><vh>@int</vh></v>
<v t="ekr.20061002115414"><vh>@float</vh></v>
<v t="ekr.20111003130143.15561"><vh>@font</vh></v>
<v t="ekr.20041120181045"><vh>@ratio</vh></v>
<v t="ekr.20041119042929.2"><vh>@path</vh></v>
<v t="ekr.20041119042929.7"><vh>@string</vh></v>
</v>
<v t="ekr.20041119035704.1"><vh> Organizer nodes</vh></v>
<v t="ekr.20071217093419"><vh>\@data</vh></v>
<v t="ekr.20080312071248.25"><vh>\@buttons</vh></v>
<v t="ekr.20080312071248.19"><vh>\@button name [@key=value]</vh></v>
<v t="ekr.20080312071248.26"><vh>\@commands</vh></v>
<v t="ekr.20080312071248.20"><vh>\@command name [@key=value]</vh></v>
<v t="ekr.20070224073109"><vh>\@enabled-plugins</vh></v>
<v t="ekr.20060913144412"><vh>\@keys keyset-name</vh></v>
<v t="ekr.20150426033400.1"><vh>\@ifenv name,value</vh></v>
<v t="ekr.20150426031409.1"><vh>\@ifhostname hostname or !hostname</vh></v>
<v t="ekr.20041119110141"><vh>\@ifplatform platform-name</vh></v>
<v t="ekr.20041119035704.2"><vh>\@ignore comment</vh></v>
<v t="ekr.20170823083657.1"><vh>\@menu and \@item</vh></v>
<v t="ekr.20130503155210.16364"><vh>\@menuat </vh></v>
<v t="ekr.20070411172718"><vh>\@openwith name = shortcut</vh></v>
<v t="ekr.20131115075142.18226"><vh>\@outline-data setting-name</vh></v>
<v t="ekr.20180124050114.1"><vh>\@rclick</vh></v>
<v t="ekr.20041119105509"><vh>\@set name = value</vh></v>
<v t="ekr.20041120155431.1"><vh>\@shortcuts</vh></v>
<v t="ekr.20041119035704.3"><vh>\@type type-name: base-type = [list of valid values]</vh></v>
<v t="ekr.20041120155431.2"><vh>\@type type-name: script: script-name</vh></v>
</v>
<v t="ekr.20061011082224"><vh>About myLeoSettings.leo</vh></v>
<v t="ekr.20041119034357.1"><vh>@settings</vh>
<v t="ekr.20180306144001.1"><vh> Color definitions</vh>
<v t="ekr.20140912072521.19153"><vh>@color LeoGreen = #00AA00</vh></v>
<v t="ekr.20140912072521.19154"><vh>@color LeoYellow = #ffffec</vh></v>
<v t="ekr.20180308050150.1"><vh>Logical colors</vh>
<v t="ekr.20180308050150.2"><vh>@color log_black_color = black</vh></v>
<v t="ekr.20180308050150.3"><vh>@color log_blue_color = blue</vh></v>
<v t="ekr.20180308050150.15"><vh>@color log_cyan_color = cyan</vh></v>
<v t="ekr.20180308050150.4"><vh>@color log_error_color = red</vh></v>
<v t="ekr.20180308050150.5"><vh>@color log_green_color = green</vh></v>
<v t="ekr.20180308050150.6"><vh>@color log_info_color = blue</vh></v>
<v t="ekr.20180308050150.7"><vh>@color log_magenta_color = magenta</vh></v>
<v t="ekr.20180308050150.8"><vh>@color log_note_color = blue</vh></v>
<v t="ekr.20180308050150.9"><vh>@color log_orange_color = orange</vh></v>
<v t="ekr.20180308050150.10"><vh>@color log_red_color = red</vh></v>
<v t="ekr.20180308050150.11"><vh>@color log_violet_color = violet</vh></v>
<v t="ekr.20180306155628.1"><vh>@color log_warning_color = red</vh></v>
<v t="ekr.20180308050150.13"><vh>@color log_white_color = white</vh></v>
<v t="ekr.20180308050150.14"><vh>@color log_yellow_color = yellow</vh></v>
</v>
<v t="ekr.20180307005648.1"><vh>Solarized color definitions</vh>
<v t="ekr.20180307005648.7"><vh>@color solarized-base0 = #839496</vh></v>
<v t="ekr.20180307005648.6"><vh>@color solarized-base00 = #657b83</vh></v>
<v t="ekr.20180307005648.5"><vh>@color solarized-base01 = #586e75</vh></v>
<v t="ekr.20180307005648.4"><vh>@color solarized-base02 = #073642</vh></v>
<v t="ekr.20180307005648.3"><vh>@color solarized-base03 = #002b36</vh></v>
<v t="ekr.20180307005648.8"><vh>@color solarized-base1 = #93a1a1</vh></v>
<v t="ekr.20180307005648.9"><vh>@color solarized-base2 = #eee8d5</vh></v>
<v t="ekr.20180307005648.10"><vh>@color solarized-base3 = #fdf6e3</vh></v>
<v t="ekr.20180307030442.1"><vh>@color solarized-black = #000005</vh></v>
<v t="ekr.20180307005648.16"><vh>@color solarized-blue = #268bd2</vh></v>
<v t="ekr.20180307005648.17"><vh>@color solarized-cyan = #2aa198</vh></v>
<v t="ekr.20180307005648.18"><vh>@color solarized-green = #859900</vh></v>
<v t="ekr.20180307005648.14"><vh>@color solarized-magenta = #d33682</vh></v>
<v t="ekr.20180307005648.12"><vh>@color solarized-orange = #cb4b16</vh></v>
<v t="ekr.20180307005648.13"><vh>@color solarized-red = #dc322f</vh></v>
<v t="ekr.20180307005648.15"><vh>@color solarized-violet = #6c71c4</vh></v>
<v t="ekr.20180307030430.1"><vh>@color solarized-white = #fdf6e3 </vh></v>
<v t="ekr.20180307005648.11"><vh>@color solarized-yellow = #b58900</vh></v>
</v>
<v t="ekr.20170307055039.1"><vh>Solarized color reference</vh></v>
</v>
<v t="ekr.20100904134301.11000"><vh>Abbreviations</vh>
<v t="ekr.20100904134301.11006"><vh>@bool enable-abbreviations = True</vh></v>
<v t="ekr.20130924110246.13745"><vh>@bool scripting-abbreviations = False</vh></v>
<v t="ekr.20100904134301.11004"><vh>@data abbreviations</vh></v>
<v t="ekr.20150428102831.1"><vh>@data abbreviations-subst-env</vh>
<v t="ekr.20150428102831.4"><vh>ask</vh></v>
<v t="ekr.20150428102831.12"><vh>close_xml</vh></v>
<v t="ekr.20150428102831.13"><vh>django_tag</vh></v>
<v t="ekr.20150428102831.2"><vh>do</vh></v>
<v t="ekr.20150428102831.8"><vh>file_name</vh></v>
<v t="ekr.20150428102831.5"><vh>get</vh></v>
<v t="ekr.20161121172936.1"><vh>get_language</vh></v>
<v t="jlunz.20150821113251.1"><vh>html_tag</vh></v>
<v t="ekr.20150428102831.9"><vh>in_class</vh></v>
<v t="ekr.20150428102831.3"><vh>insert</vh></v>
<v t="ekr.20150428102831.11"><vh>long_word</vh></v>
<v t="ekr.20150428102831.10"><vh>param_doc</vh></v>
<v t="ekr.20150428102831.7"><vh>user_name</vh></v>
</v>
<v t="ekr.20100904134301.11002"><vh>@data global-abbreviations</vh></v>
<v t="ekr.20161121044950.1"><vh>@outline-data tree-abbreviations</vh>
<v t="ekr.20170530035032.1"><vh>importer;;</vh>
<v t="ekr.20170530035032.2"><vh>@@file importers/{|{x=name}|}.py</vh>
<v t="ekr.20170530035032.3"><vh>class {|{x=cap_name}|}_Importer</vh>
<v t="ekr.20170530035032.4"><vh>{|{x=name}|}.Overrides</vh>
<v t="ekr.20170530035032.5"><vh>{|{x=name}|}.clean_headline</vh></v>
<v t="ekr.20170530035032.6"><vh>{|{x=name}|}.clean_nodes</vh></v>
</v>
</v>
<v t="ekr.20170530035032.7"><vh>class class {|{x=cap_name}|}_ScanState</vh>
<v t="ekr.20170530035032.8"><vh>{|{x=name}|}_state.level</vh></v>
<v t="ekr.20170530035032.9"><vh>{|{x=name}|}_state.update</vh></v>
</v>
</v>
</v>
<v t="ekr.20161121044950.2"><vh>per-commander-plugin;;</vh>
<v t="ekr.20161121044950.3"><vh>@@file pluginname.py</vh>
<v t="ekr.20161121044950.4"><vh>&lt;&lt; docstring &gt;&gt;</vh></v>
<v t="ekr.20161121044950.5"><vh>&lt;&lt; version history &gt;&gt;</vh></v>
<v t="ekr.20161121044950.6"><vh>&lt;&lt; imports &gt;&gt;</vh></v>
<v t="ekr.20161121044950.7"><vh>init</vh></v>
<v t="ekr.20161121044950.8"><vh>onCreate</vh></v>
<v t="ekr.20161121044950.9"><vh>class pluginController</vh>
<v t="ekr.20161121044950.10"><vh>__init__</vh></v>
</v>
</v>
</v>
<v t="ekr.20170208063946.1"><vh>demo;;</vh>
<v t="ekr.20170208063901.1"><vh>@@button MyDemo @key=Ctrl-9</vh>
<v t="ekr.20170208063901.2"><vh>&lt;&lt; imports &gt;&gt;</vh></v>
<v t="ekr.20170208063901.3"><vh>script_string</vh></v>
<v t="ekr.20170208063901.4"><vh>class myDemo</vh></v>
<v t="ekr.20170208063901.5"><vh>wrappers</vh></v>
</v>
</v>
</v>
<v t="tbrown.20120821183537.18662"><vh>@string abbreviations-place-end = |&gt;</vh></v>
<v t="tbrown.20120821183537.18663"><vh>@string abbreviations-place-start = &lt;|</vh></v>
<v t="tbrown.20120820202856.25329"><vh>@string abbreviations-subst-end = }|}</vh></v>
<v t="tbrown.20120820202856.25328"><vh>@string abbreviations-subst-start = {|{</vh></v>
<v t="tbrown.20151114110207.1"><vh>@string abbreviations-next-placeholder = ,,</vh></v>
</v>
<v t="ekr.20140917051508.19548"><vh>Appearance (change these first)</vh>
<v t="ekr.20140912075503.19369"><vh>Qt Gui settings</vh>
<v t="ekr.20140915194122.23431"><vh>Colors</vh>
<v t="ekr.20140912075503.19318"><vh>Body pane colors</vh>
<v t="ekr.20140912075503.19319"><vh>@color body-bg = white</vh></v>
<v t="ekr.20140912075503.19320"><vh>@color body-fg = black</vh></v>
<v t="ekr.20140912075503.19321"><vh>@color body-sel-fg = white</vh></v>
<v t="ekr.20140912075503.19322"><vh>@color body-sel-bg = lightgray</vh></v>
</v>
<v t="ekr.20140915194122.23439"><vh>Border colors</vh>
<v t="tbrown.20140514191846.42171"><vh>@color focused-border-focus-color = blue</vh></v>
<v t="tbrown.20140514191846.42173"><vh>@color focused-border-unfocus-color = white</vh></v>
</v>
<v t="tbrown.20131122091143.23829"><vh>Button colors</vh>
<v t="tbrown.20131122091143.23833"><vh>@color run-script-btn-bg = @MistyRose1</vh></v>
<v t="tbrown.20131122091143.23834"><vh>@color debug-script-btn-bg = @MistyRose1</vh></v>
<v t="tbrown.20131122091143.23835"><vh>@color script-button-button-btn-bg = #ffffcc</vh></v>
<v t="tbrown.20131122091143.23836"><vh>@color script-button-btn-bg = @MistyRose1</vh></v>
<v t="tbrown.20131122091143.23837"><vh>@color generic-button-btn-bg = @LightSteelBlue1</vh></v>
<v t="tbrown.20131122091143.23838"><vh>@color quick-move-btn-bg = @LightSteelBlue1</vh></v>
<v t="tbrown.20131122091143.23839"><vh>@color interact-btn-bg = @LightBlue</vh></v>
<v t="tbrown.20131122091143.23840"><vh>@color at-button-btn-bg = @LightSteelBlue1</vh></v>
</v>
<v t="ekr.20140915194122.23445"><vh>Find tab colors</vh>
<v t="ekr.20140912075503.19269"><vh>@color find-tab-bg = white</vh></v>
</v>
<v t="ekr.20150701073241.1"><vh>Gutter colors</vh>
<v t="ekr.20150701073252.1"><vh>@color gutter-bg = @LightSteelBlue1</vh></v>
<v t="ekr.20150701073308.1"><vh>@color gutter-fg = black</vh></v>
</v>
<v t="ekr.20140912075503.19309"><vh>Log pane colors</vh>
<v t="ekr.20140912075503.19310"><vh>@color log-fg = black</vh></v>
<v t="ekr.20140912075503.19311"><vh>@color log-bg = white</vh></v>
</v>
<v t="ekr.20140912075503.19327"><vh>Minibuffer colors</vh>
<v t="ekr.20140912075503.19330"><vh>@color minibuffer-fg = black</vh></v>
<v t="ekr.20140912075503.19331"><vh>@color minibuffer-bg = @LightSteelBlue1</vh></v>
<v t="ekr.20140912075503.19332"><vh>@color minibuffer-sel-fg = white</vh></v>
<v t="ekr.20140912075503.19333"><vh>@color minibuffer-sel-bg = lightgray</vh></v>
</v>
<v t="ekr.20140912075503.19283"><vh>Outline colors</vh>
<v t="ekr.20140915194122.23437"><vh>Basic outline colors</vh>
<v t="ekr.20140912075503.19284"><vh>@color tree-fg = black</vh></v>
<v t="ekr.20140912075503.19285"><vh>@color tree-bg = @LeoYellow</vh></v>
</v>
<v t="ekr.20140912075503.19292"><vh>Colors for headlines that *are* being edited</vh>
<v t="ekr.20140912075503.19293"><vh>@color head-fg = black</vh></v>
<v t="ekr.20140912075503.19294"><vh>@color head-bg = white</vh></v>
<v t="ekr.20140912075503.19295"><vh>@color head-sel-fg = white</vh></v>
<v t="ekr.20140912075503.19296"><vh>@color head-sel-bg = blue</vh></v>
</v>
<v t="ekr.20140912075503.19301"><vh>Colors for headlines that are *not* being edited</vh>
<v t="ekr.20140912075503.19302"><vh>@@string edit-label-border = 2px</vh></v>
<v t="ekr.20140912075503.19303"><vh>@@string edit-label-margin = 2px</vh></v>
<v t="ekr.20140912075503.19304"><vh>@color edit-label-bg = @LightSteelBlue1</vh></v>
<v t="ekr.20141204160426.5"><vh>@color edit-label-fg = black</vh></v>
</v>
</v>
<v t="ekr.20140915194122.24238"><vh>Plugin colors (deprecated)</vh>
<v t="ekr.20140915194122.24250"><vh>@color text-foreground = black</vh></v>
<v t="ekr.20140915194122.24251"><vh>@color text-foreground-body = @text-foreground</vh></v>
<v t="ekr.20140915194122.24252"><vh>@color text-foreground-tree = @text-foreground</vh></v>
<v t="ekr.20140915194122.24253"><vh>@color text-foreground-log = @text-foreground</vh></v>
</v>
<v t="edward.20150614045858.1"><vh>Render pane colors</vh>
<v t="edward.20150614045915.1"><vh>@color render-bg = white</vh></v>
<v t="edward.20150614045931.1"><vh>@color render-fg = black</vh></v>
</v>
<v t="ekr.20140915194122.23446"><vh>Scroll area colors</vh>
<v t="ekr.20140912075503.19268"><vh>@color scroll-area-bg = white</vh></v>
</v>
<v t="ekr.20140912075503.19273"><vh>Splitter colors</vh>
<v t="ekr.20140912075503.19274"><vh>@color splitter-bg = white</vh></v>
<v t="ekr.20140915194122.23418"><vh>@color splitter-handle-bg = @LightSteelBlue1</vh></v>
<v t="ekr.20140912075503.19275"><vh>@color splitter-border-fg = white</vh></v>
<v t="ekr.20140912075503.19276"><vh>@color splitter-border-style = solid</vh></v>
<v t="ekr.20180317172528.1"><vh>@color splitter-hover-bg = @LightSteelBlue1</vh></v>
</v>
<v t="ekr.20140912075503.19345"><vh>Status area colors</vh>
<v t="ekr.20140912075503.19346"><vh>@color status-bg = lightgrey</vh></v>
<v t="ekr.20150711073509.1"><vh>@color status-fg = black</vh></v>
<v t="ekr.20140912075503.19348"><vh>@color status-border-style = solid</vh></v>
<v t="ekr.20140912075503.19349"><vh>@color status-border-color = darkgrey</vh></v>
</v>
<v t="ekr.20150626061905.1"><vh>Status area colors for searches</vh>
<v t="ekr.20150626060718.1"><vh>@color find-found-bg = blue</vh></v>
<v t="ekr.20150626060718.2"><vh>@color find-found-fg = white</vh></v>
<v t="ekr.20150626060719.1"><vh>@color find-not-found-bg = red</vh></v>
<v t="ekr.20150626060837.1"><vh>@color find-not-found-fg = white</vh></v>
</v>
<v t="ekr.20140915194122.23447"><vh>Widget colors (simple widgets)</vh>
<v t="ekr.20140922124047.19517"><vh>@color frame-bg = white</vh></v>
<v t="ekr.20140912075503.19271"><vh>@color stacked-widget-border-color = white</vh></v>
<v t="ekr.20140922124047.20313"><vh>@color stacked-widget-bg = white</vh></v>
<v t="ekr.20140922124047.19516"><vh>@color tabbed-widget-bg = white</vh></v>
</v>
</v>
<v t="ekr.20140912075503.19262"><vh>Fonts</vh>
<v t="ekr.20140915194122.23428"><vh>Basic Fonts (change these first)</vh>
<v t="ekr.20140912075503.19263"><vh>@string font-family = Droid Sans Mono, DejaVu Sans Mono</vh></v>
<v t="ekr.20140912075503.19264"><vh>@string font-size = 12pt </vh></v>
<v t="ekr.20140915194122.23413"><vh>@string medium-font-size = 10pt</vh></v>
<v t="ekr.20140915194122.21837"><vh>@string small-font-size = 10pt</vh></v>
<v t="ekr.20140912075503.19266"><vh>@string font-style = normal</vh></v>
<v t="ekr.20140912075503.19265"><vh>@string font-weight = normal</vh></v>
</v>
<v t="ekr.20140915194122.23427"><vh>Body Fonts</vh>
<v t="ekr.20140912075503.19323"><vh>@string body-font-family = @font-family</vh></v>
<v t="ekr.20140912075503.19324"><vh>@string body-font-size = @font-size</vh></v>
<v t="ekr.20140912075503.19326"><vh>@string body-font-style = @font-style</vh></v>
<v t="ekr.20140912075503.19325"><vh>@string body-font-weight = @font-weight</vh></v>
<v t="tbrown.20131122094200.2512"><vh>@string font-size-body = @body-font-size</vh></v>
</v>
<v t="ekr.20140915194122.23441"><vh>Dialog fonts</vh>
<v t="ekr.20140912075503.19341"><vh>@string dialog-font-family = @font-family</vh></v>
<v t="ekr.20140912075503.19342"><vh>@string dialog-font-size = @font-size</vh></v>
<v t="ekr.20140912075503.19343"><vh>@string dialog-font-weight = @font-weight </vh></v>
<v t="ekr.20140912075503.19344"><vh>@string dialog-font-style = @font-style</vh></v>
</v>
<v t="ekr.20140912075503.19277"><vh>Find Panel Fonts</vh>
<v t="ekr.20140915194122.23424"><vh>@string checkbox-font-family = @font-family</vh></v>
<v t="ekr.20140915194122.23422"><vh>@string checkbox-font-size = @medium-font-size</vh></v>
<v t="ekr.20140912075503.19279"><vh>@string find-font-family = @font-family</vh></v>
<v t="ekr.20140912075503.19280"><vh>@string find-font-size = @medium-font-size</vh></v>
<v t="ekr.20140912075503.19282"><vh>@string find-font-style = @font-style</vh></v>
<v t="ekr.20140912075503.19281"><vh>@string find-font-weight = @font-weight</vh></v>
<v t="ekr.20140912075503.19278"><vh>@string find-pattern-font-family = @font-family</vh></v>
</v>
<v t="ekr.20150701052157.1"><vh>Gutter Fonts</vh>
<v t="ekr.20150701052212.2"><vh>@string gutter-font-family = @font-family</vh></v>
<v t="ekr.20150701052212.3"><vh>@string gutter-font-size = @small-font-size</vh></v>
<v t="ekr.20150701052212.4"><vh>@string gutter-font-style = @font-style</vh></v>
<v t="ekr.20150701052212.5"><vh>@string gutter-font-weight = @font-weight</vh></v>
</v>
<v t="ekr.20140915194122.23429"><vh>Log pane fonts</vh>
<v t="ekr.20140912075503.19312"><vh>@string log-sel-fg = white</vh></v>
<v t="ekr.20140912075503.19313"><vh>@string log-sel-bg = blue</vh></v>
<v t="ekr.20140912075503.19314"><vh>@string log-font-family = @font-family</vh></v>
<v t="ekr.20140912075503.19315"><vh>@string log-font-size = @font-size</vh></v>
<v t="ekr.20140912075503.19316"><vh>@string log-font-weight = @font-weight</vh></v>
<v t="ekr.20140912075503.19317"><vh>@string log-font-style = @font-style</vh></v>
</v>
<v t="ekr.20140915194122.23430"><vh>Minibuffer fonts</vh>
<v t="ekr.20140912075503.19334"><vh>@string minibuffer-font-family = @font-family</vh></v>
<v t="ekr.20140912075503.19335"><vh>@string minibuffer-font-size = @font-size</vh></v>
<v t="ekr.20140912075503.19336"><vh>@string minibuffer-font-weight = @font-weight</vh></v>
<v t="ekr.20140912075503.19337"><vh>@string minibuffer-font-style = @font-style</vh></v>
</v>
<v t="ekr.20140915194122.23432"><vh>Outline pane fonts</vh>
<v t="ekr.20140915194122.23436"><vh>Basic outline fonts</vh>
<v t="ekr.20140912075503.19288"><vh>@string tree-font-family = @font-family</vh></v>
<v t="ekr.20140912075503.19289"><vh>@string tree-font-size = @font-size</vh></v>
<v t="ekr.20140912075503.19290"><vh>@string tree-font-weight = @font-weight</vh></v>
<v t="ekr.20140912075503.19291"><vh>@string tree-font-style = @font-style</vh></v>
</v>
<v t="ekr.20140915194122.23433"><vh>Fonts for headlines that *are* being edited</vh>
<v t="ekr.20140912075503.19297"><vh>@string head-font-family = @font-family</vh></v>
<v t="ekr.20140912075503.19298"><vh>@string head-font-size = @font-size</vh></v>
<v t="ekr.20140912075503.19299"><vh>@string head-font-weight = @font-weight</vh></v>
<v t="ekr.20140912075503.19300"><vh>@string head-font-style = @font-style</vh></v>
</v>
<v t="ekr.20140915194122.23435"><vh>Fonts for headlines that are *not* being edited</vh>
<v t="ekr.20140912075503.19305"><vh>@string edit-label-font-family = @font-family</vh></v>
<v t="ekr.20140912075503.19306"><vh>@string edit-label-font-size = @font-size</vh></v>
<v t="ekr.20140912075503.19307"><vh>@string edit-label-font-weight = @font-weight</vh></v>
<v t="ekr.20140912075503.19308"><vh>@string edit-label-font-style = @font-style</vh></v>
</v>
</v>
<v t="ekr.20140915194122.23443"><vh>Status area fonts</vh>
<v t="ekr.20140912075503.19350"><vh>@string status-font-family = @font-family</vh></v>
<v t="ekr.20140912075503.19351"><vh>@string status-font-size = @small-font-size</vh></v>
<v t="ekr.20140912075503.19352"><vh>@string status-font-weight = @font-weight</vh></v>
<v t="ekr.20140912075503.19353"><vh>@string status-font-style = @font-style</vh></v>
</v>
</v>
<v t="ekr.20140915194122.23442"><vh>Margins &amp; borders</vh>
<v t="ekr.20140912075503.19338"><vh>Dialogs styles</vh>
<v t="ekr.20140912075503.19339"><vh>@string dialog-border = 2px</vh></v>
<v t="ekr.20140912075503.19340"><vh>@string dialog-margin = 2px</vh></v>
</v>
<v t="tbrown.20140514191846.42168"><vh>Focus border styles</vh>
<v t="tbrown.20140514191846.42169"><vh>@string focused-border-style = solid</vh></v>
<v t="tbrown.20140514191846.42170"><vh>@string focused-border-width = 3px</vh></v>
</v>
<v t="ekr.20150701074511.1"><vh>Gutter</vh>
<v t="ekr.20150701074844.1"><vh>@bool use-gutter = True</vh></v>
<v t="ekr.20150701074521.1"><vh>@int gutter-w-adjust = 12</vh></v>
<v t="ekr.20150701074533.1"><vh>@int gutter-y-adjust = 10</vh></v>
</v>
<v t="ekr.20140915194122.24258"><vh>Minibuffer styles</vh>
<v t="ekr.20140912075503.19328"><vh>@string minibuffer-border = 2px</vh></v>
<v t="ekr.20140912075503.19329"><vh>@string minibuffer-margin = 2px</vh></v>
</v>
<v t="ekr.20140912075503.19270"><vh>Stacked widgets styles</vh>
<v t="ekr.20140912075503.19272"><vh>@string stacked-widget-padding = 0px</vh></v>
</v>
<v t="ekr.20140915194122.23444"><vh>Status area styles</vh>
<v t="ekr.20140912075503.19347"><vh>@string status-border-width = 1px</vh></v>
</v>
<v t="ekr.20140912075503.19365"><vh>Vim mode borders/colors</vh>
<v t="ekr.20140912075503.19366"><vh>@string vim-mode-normal-border = 3px solid @Salmon</vh></v>
<v t="ekr.20140912075503.19367"><vh>@string vim-mode-insert-border = 3px solid blue</vh></v>
<v t="ekr.20140912075503.19368"><vh>@string vim-mode-visual-border = 3px solid gray</vh></v>
</v>
</v>
<v t="edward.20150615144141.1"><vh>Outline indicators</vh>
<v t="edward.20150615144141.2"><vh>@string tree-image-closed = None</vh></v>
<v t="edward.20150615144141.3"><vh>@string tree-image-open = None</vh></v>
<v t="tbrown.20150810084824.1"><vh>@int tree-icon-separation = 1</vh></v>
</v>
<v t="ekr.20140915194122.23440"><vh>Plugins</vh>
<v t="ekr.20140912075503.19355"><vh>bookmarks.py plugin</vh>
<v t="ekr.20140915194122.24259"><vh>bookmarks base</vh>
<v t="tbrown.20140101093550.25136"><vh>@color bookmarks_base_color = @text-foreground</vh></v>
<v t="ekr.20140912075503.19358"><vh>@string bookmarks_base_border = "none"</vh></v>
<v t="tbrown.20140101093550.25140"><vh>@string bookmarks_base_decoration = "none"</vh></v>
<v t="ekr.20140915194122.24263"><vh>@string bookmarks_base_family = @font-family</vh></v>
<v t="ekr.20140912075503.19356"><vh>@string bookmarks_base_margin = 0</vh></v>
<v t="ekr.20140912075503.19357"><vh>@string bookmarks_base_padding = 1</vh></v>
<v t="tbrown.20140101093550.25165"><vh>@string bookmarks_base_size = @bookmarks_font_size</vh></v>
<v t="ekr.20140915194122.24265"><vh>@string bookmarks_base_style = normal</vh></v>
<v t="tbrown.20140101093550.25138"><vh>@string bookmarks_base_weight = regular</vh></v>
</v>
<v t="ekr.20140915194122.24260"><vh>bookmarks children</vh>
<v t="tbrown.20140101093550.25162"><vh>@color bookmarks_children_color = @text-foreground</vh></v>
<v t="tbrown.20140101093550.25164"><vh>@string bookmarks_children_decoration = underline</vh></v>
<v t="ekr.20140915194122.24264"><vh>@string bookmarks_children_family = @font-family</vh></v>
<v t="tbrown.20140101093550.25171"><vh>@string bookmarks_children_size = ignore</vh></v>
<v t="ekr.20140915194122.24266"><vh>@string bookmarks_children_style = ignore</vh></v>
<v t="tbrown.20140101093550.25163"><vh>@string bookmarks_children_weight = ignore</vh></v>
</v>
<v t="ekr.20140915194122.24261"><vh>bookmarks current</vh>
<v t="tbrown.20140101093550.25146"><vh>@color bookmarks_current_color = blue</vh></v>
<v t="tbrown.20140101093550.25148"><vh>@string bookmarks_current_decoration = "none"</vh></v>
<v t="ekr.20180317175351.1"><vh>@string bookmarks_current_size = @bookmarks_font_size</vh></v>
<v t="ekr.20140915194122.24267"><vh>@string bookmarks_current_style = "none"</vh></v>
<v t="tbrown.20140101093550.25147"><vh>@string bookmarks_current_weight = bold</vh></v>
</v>
<v t="ekr.20140915194122.24262"><vh>bookmarks expanded</vh>
<v t="tbrown.20140101093550.25154"><vh>@color bookmarks_expanded_color = @text-foreground</vh></v>
<v t="tbrown.20140101093550.25156"><vh>@string bookmarks_expanded_decoration = underline</vh></v>
<v t="tbrown.20140101093550.25169"><vh>@string bookmarks_expanded_size = ignore</vh></v>
<v t="ekr.20140915194122.24268"><vh>@string bookmarks_expanded_style = ignore</vh></v>
<v t="tbrown.20140101093550.25155"><vh>@string bookmarks_expanded_weight = bold</vh></v>
<v t="tbrown.20140101093550.25173"><vh>@string bookmarks_font_size = 11pt</vh></v>
</v>
</v>
<v t="ekr.20140912075503.19359"><vh>screencast.py plugin</vh>
<v t="ekr.20140912075503.19360"><vh>@string screencast-bg = yellow</vh></v>
<v t="ekr.20140912075503.19361"><vh>@string screencast-font-family = Times New Roman</vh></v>
<v t="ekr.20140912075503.19362"><vh>@string screencaset-font-size = 18pt</vh></v>
<v t="ekr.20140912075503.19363"><vh>@string screencast-font-weight = normal</vh></v>
<v t="ekr.20140912075503.19364"><vh>@string screencaset-font-style = normal</vh></v>
</v>
</v>
</v>
<v t="ekr.20131119143342.18879"><vh>Qt Gui style sheet</vh>
<v t="ekr.20140912072521.19160"><vh>@data qt-gui-plugin-style-sheet</vh>
<v t="ekr.20140915194122.19458"><vh>Body pane</vh></v>
<v t="ekr.20140915194122.19467"><vh>Buttons</vh></v>
<v t="ekr.20140915194122.19466"><vh>Dialogs (QLabel)</vh></v>
<v t="ekr.20140915194122.19459"><vh>Find Tab</vh></v>
<v t="ekr.20150701073123.1"><vh>Gutter</vh></v>
<v t="ekr.20140915194122.19461"><vh>Log panes</vh></v>
<v t="ekr.20140915194122.19462"><vh>Minibuffer</vh></v>
<v t="ekr.20140915194122.19474"><vh>Outline pane (change default path)</vh></v>
<v t="ekr.20140915194122.19463"><vh>Plugins</vh>
<v t="ekr.20140915194122.19464"><vh>Bookmarks plugin (stylesheet)</vh></v>
<v t="ekr.20140915194122.19465"><vh>Screencast plugin</vh></v>
<v t="ekr.20140915194122.19468"><vh>Interact plugin</vh></v>
<v t="ekr.20140915194122.19469"><vh>Quickmove plugin</vh></v>
</v>
<v t="edward.20150614045745.1"><vh>Rendering pane</vh></v>
<v t="ekr.20140915194122.19471"><vh>Splitter</vh></v>
<v t="ekr.20140915194122.19473"><vh>Status areas</vh></v>
<v t="ekr.20140915194122.19475"><vh>Vim mode borders</vh></v>
<v t="ekr.20140915194122.19470"><vh>Widgets</vh></v>
</v>
</v>
<v t="ekr.20150620100951.1"><vh>User Qt Gui style sheet</vh>
<v t="ekr.20150620100923.1"><vh>@ignore @data qt-gui-user-style-sheet</vh></v>
</v>
</v>
<v t="ekr.20110510071925.14588"><vh>Autocompleter</vh>
<v t="ekr.20110510071925.14590"><vh>@@@bool use_codewise = False</vh></v>
<v t="ekr.20110512085854.14461"><vh>@bool auto_tab_complete = True</vh></v>
<v t="ekr.20051027175030"><vh>@bool autocomplete-brackets = False</vh></v>
<v t="ekr.20060216170801"><vh>@bool enable_calltips_initially = False</vh></v>
<v t="ekr.20110617081407.14760"><vh>@bool forbid_invalid_completions = False</vh></v>
<v t="ekr.20180525053145.1"><vh>@bool use_jedi = False</vh></v>
<v t="ekr.20110510071925.14589"><vh>@bool use_qcompleter = True</vh></v>
</v>
<v t="ekr.20140916113003.20415"><vh>Bracket matching</vh>
<v t="ekr.20060627084739"><vh>@bool flash_matching_brackets = True</vh></v>
<v t="ekr.20060627121646"><vh>@color flash_brackets_background_color = DodgerBlue1</vh></v>
<v t="ekr.20060627121646.1"><vh>@color flash_brackets_foreground_color = white</vh></v>
<v t="ekr.20060627121646.2"><vh>@int flash_brackets_count = 2</vh></v>
<v t="ekr.20060627121646.3"><vh>@int flash-brackets-delay = 75</vh></v>
</v>
<v t="ekr.20110611092035.16489"><vh>Chapters</vh>
<v t="ekr.20070604075218"><vh>@bool use_chapter_tabs = True</vh></v>
<v t="ekr.20070318065601"><vh>@bool use_chapters = True</vh></v>
</v>
<v t="ekr.20041119034357.10"><vh>Command options</vh>
<v t="ekr.20131112150804.18737"><vh>@bool force_execute_entire_body = False</vh></v>
<v t="ekr.20111115083813.12518"><vh>@bool indent_added_comments = True</vh></v>
<v t="ekr.20150227102835.1"><vh>@bool make_node_conflicts_node = True</vh></v>
<v t="ekr.20180117074230.1"><vh>@bool show-tips = True</vh></v>
<v t="ekr.20180301060510.1"><vh>@int print-settings-at-data-limit = 20</vh></v>
<v t="ekr.20160428072005.1"><vh>@data history-list</vh></v>
<v t="ekr.20041119041019.1"><vh>@string remove_sentinels_extension = .txt</vh></v>
<v t="ekr.20141010095448.19776"><vh>Beautify command settings</vh>
<v t="ekr.20150602160413.1"><vh>@bool tidy_autobeautify = False</vh></v>
<v t="ekr.20141010095448.19779"><vh>@bool tidy_keep_blank_lines = True</vh></v>
</v>
<v t="ekr.20110611092035.16488"><vh>Bracket matching</vh>
<v t="ekr.20060804095015.1"><vh>@string close_flash_brackets = )]}</vh></v>
<v t="ekr.20060804095015"><vh>@string open_flash_brackets = ([{</vh></v>
</v>
<v t="ekr.20110917104720.9414"><vh>c-to-python settings</vh>
<v t="ekr.20110917104720.9415"><vh>@data c-to-python-class-list</vh></v>
<v t="ekr.20110917104720.9416"><vh>@data c-to-python-type-list</vh></v>
<v t="ekr.20110917104720.9417"><vh>@data c-to-python-ivars-dict</vh></v>
</v>
<v t="ekr.20110611092035.16479"><vh>Emacs-like commands</vh>
<v t="ekr.20071006153053"><vh>@bool add_ws_to_kill_ring = False</vh></v>
<v t="ekr.20070531103454"><vh>@bool globalDynamicAbbrevs = True</vh></v>
</v>
<v t="ekr.20110611092035.16482"><vh>Headline commands</vh>
<v t="ekr.20041119050749.11"><vh>@string headline_gmt_time = None</vh></v>
<v t="ekr.20041119050749.10"><vh>@string headline_time_format_string = %m/%d</vh></v>
</v>
<v t="ekr.20160127043440.1"><vh>make-stub-files</vh>
<v t="ekr.20160127051552.1"><vh>@bool stub-overwrite = False</vh></v>
<v t="ekr.20160318061607.3"><vh>@bool stub-trace-matches = False</vh></v>
<v t="ekr.20160318061607.4"><vh>@bool stub-trace-patterns = False</vh></v>
<v t="ekr.20160318061607.6"><vh>@bool stub-trace-reduce = False</vh></v>
<v t="ekr.20160318061607.5"><vh>@bool stub-trace-visitors = False</vh></v>
<v t="ekr.20160318061607.7"><vh>@bool stub-update = False</vh></v>
<v t="ekr.20160127043520.1"><vh>@data stub-def-name-patterns</vh></v>
<v t="ekr.20160130145944.1"><vh>@data stub-general-patterns</vh></v>
<v t="ekr.20160112111247.1"><vh>@data stub-prefix-lines</vh></v>
<v t="ekr.20160317062151.1"><vh>@data stub-regex-patterns</vh></v>
<v t="ekr.20160127051243.1"><vh>@string stub-output-directory = ~/stubs</vh></v>
</v>
<v t="ekr.20160316111054.1"><vh>python-to-coffeescript settings</vh>
<v t="ekr.20160316112407.2"><vh>@bool py2cs-overwrite = True</vh></v>
<v t="ekr.20160316112407.8"><vh>@string py2cs-output-directory = ~/py2cs</vh></v>
</v>
<v t="ekr.20071213060239"><vh>rst3 command</vh>
<v t="ekr.20071213060239.1"><vh>rst3 http options</vh>
<v t="ekr.20071213061454"><vh>@bool rst3_clear_http_attributes = False</vh></v>
<v t="ekr.20071213061454.1"><vh>@bool rst3_http_server_support = False</vh></v>
<v t="ekr.20071213061454.2"><vh>@string rst3_http_attributename = rst_http_attribute</vh></v>
<v t="ekr.20071213061454.3"><vh>@string rst3_node_begin_marker = http-node-marker-</vh></v>
</v>
<v t="ekr.20071213060239.2"><vh>rst3 path options</vh>
<v t="ekr.20131027064821.18683"><vh>@string rst3_write_intermediate_extension = .txt</vh></v>
<v t="ekr.20071213061504"><vh>@string rst3_default_path = None</vh></v>
<v t="ekr.20071213061504.1"><vh>@string rst3_stylesheet_name = default.css</vh></v>
<v t="ekr.20071213061504.2"><vh>@string rst3_stylesheet_path = None</vh></v>
<v t="ekr.20071213061504.3"><vh>@string rst3_publish_argv_for_missing_stylesheets = None</vh></v>
</v>
<v t="ekr.20071213060514"><vh>rst3 global options</vh>
<v t="ekr.20131009050634.17656"><vh>@bool rst3_call_docutils = True</vh></v>
<v t="ekr.20071213061811"><vh>@bool rst3_number_code_lines = True</vh></v>
<v t="ekr.20071213061811.1"><vh>@string rst3_underline_characters = #=+*^~`-:&gt;&lt;_</vh></v>
<v t="ekr.20071213061811.2"><vh>@bool rst3_verbose = True</vh></v>
<v t="ekr.20071213061811.3"><vh>@bool rst3_write_intermediate_file = True</vh></v>
</v>
<v t="ekr.20071213060514.1"><vh>rst3 mode options</vh>
<v t="ekr.20071213061923"><vh>@bool rst3_code_mode = False</vh></v>
<v t="ekr.20071213061923.1"><vh>@bool rst3_doc_only_mode = False</vh></v>
<v t="ekr.20071213061923.2"><vh>@bool rst3_generate_rst = True</vh></v>
<v t="ekr.20090430075506.7"><vh>@bool rst3_generate_rst_header_comment = True</vh></v>
</v>
<v t="ekr.20071213060514.2"><vh>rst3 formatting options</vh>
<v t="ekr.20071213061930.1"><vh>@bool rst3_show_headlines = True</vh></v>
<v t="ekr.20071213061930.2"><vh>@bool rst3_show_organizer_nodes = True</vh></v>
<v t="ekr.20071213061930.3"><vh>@bool rst3_show_options_nodes = False</vh></v>
<v t="ekr.20071213061930.4"><vh>@bool rst3_strip_at_file_prefixes = True</vh></v>
</v>
<v t="ekr.20071213061923.3"><vh>rst3 formatting options (code mode only)</vh>
<v t="ekr.20071213062019"><vh>@bool rst3_show_doc_parts_as_paragraphs = False</vh></v>
<v t="ekr.20071213062019.1"><vh>@bool rst3_show_leo_directives = True</vh></v>
<v t="ekr.20071213062019.2"><vh>@bool rst3_show_markup_doc_parts = False</vh></v>
<v t="ekr.20071213062019.3"><vh>@bool rst3_show_options_doc_parts = False</vh></v>
<v t="ekr.20090430173906.1"><vh>@@string rst3_code_block_string = \n.. class:: code\n..\n\n::\n</vh></v>
</v>
</v>
<v t="ekr.20110611092035.16478"><vh>Tangle/Untange</vh>
<v t="ekr.20041119034357.14"><vh>@bool at_root_bodies_start_in_doc_mode = True</vh></v>
<v t="ekr.20041119034357.29"><vh>@directory default_tangle_directory = None</vh></v>
</v>
<v t="ekr.20110611092035.16477"><vh>Undo</vh>
<v t="ekr.20060127050605"><vh>@int max_undo_stack_size = 0</vh></v>
<v t="ekr.20041119041019.2"><vh>@bool save_clears_undo_buffer = False</vh></v>
<v t="ekr.20050126083026"><vh>@string undo_granularity = None</vh></v>
</v>
</v>
<v t="ekr.20070926132045"><vh>Common @button nodes</vh>
<v t="ekr.20070926082407"><vh>@buttons</vh></v>
</v>
<v t="ekr.20080312075451.1"><vh>Common @command nodes</vh>
<v t="ekr.20080312075451.2"><vh>@commands</vh></v>
</v>
<v t="ekr.20041119034357.16"><vh>Compare panel</vh>
<v t="ekr.20041119034357.17"><vh>files &amp; directories</vh>
<v t="ekr.20041119043902"><vh>@string compare_file_1 = None</vh></v>
<v t="ekr.20041119043902.1"><vh>@string compare_file_2 = None</vh></v>
<v t="ekr.20041119043902.2"><vh>@string output_file = None</vh></v>
<v t="ekr.20041119043902.3"><vh>@bool append_output_to_output_file = False</vh></v>
<v t="ekr.20041119034357.18"><vh>@string limit_directory_search_extension = .py</vh></v>
</v>
<v t="ekr.20041119034357.19"><vh>file compare options</vh>
<v t="ekr.20041119043902.4"><vh>@bool ignore_blank_lines = True</vh></v>
<v t="ekr.20041119043902.5"><vh>@bool ignore_first_line_of_file_1 = False</vh></v>
<v t="ekr.20041119043902.6"><vh>@bool ignore_first_line_of_file_2 = False</vh></v>
<v t="ekr.20041119043902.7"><vh>@bool ignore_interior_whitespace = False</vh></v>
<v t="ekr.20041119043902.8"><vh>@bool ignore_leading_whitespace = False</vh></v>
<v t="ekr.20041119043902.9"><vh>@bool ignore_sentinel_lines = False</vh></v>
</v>
<v t="ekr.20041119050105"><vh>output options</vh>
<v t="ekr.20041119043902.10"><vh>@int limit_count = 9</vh></v>
<v t="ekr.20041119043902.11"><vh>@bool make_whitespace_visible = False</vh></v>
<v t="ekr.20041119043902.12"><vh>@bool print_both_lines_for_matches = False</vh></v>
<v t="ekr.20041119043902.13"><vh>@bool print_matching_lines = False</vh></v>
<v t="ekr.20041119043902.14"><vh>@bool print_mismatching_lines = True</vh></v>
<v t="ekr.20041119043902.15"><vh>@bool print_trailing_lines = True</vh></v>
</v>
</v>
<v t="ekr.20060524151415"><vh>Debugger</vh>
<v t="ekr.20070115134125"><vh>@bool write_script_file = True</vh></v>
<v t="ekr.20070115134125.1"><vh>@@string script_file_path = ../test/scriptFile.py</vh></v>
<v t="ekr.20060524151415.1"><vh>@string debugger_kind = winpdb</vh></v>
<v t="ekr.20060521132401"><vh>@string debugger_path = None</vh></v>
</v>
<v t="ekr.20051126062243"><vh>Debugging</vh>
<v t="ekr.20060408090018"><vh>@bool added_setting = True</vh></v>
<v t="ekr.20060323131801"><vh>@bool warn_about_missing_settings = False</vh></v>
<v t="ekr.20060521134125"><vh>@string debugger_default_target = None</vh></v>
<v t="ekr.20060521134125.1"><vh>@string debugger_force_target = None</vh></v>
<v t="ekr.20060325071916"><vh>For unit tests</vh>
<v t="ekr.20060325071042"><vh>@ifplatform win32</vh>
<v t="ekr.20060325071042.1"><vh>@bool test_win32_setting = True</vh></v>
</v>
<v t="ekr.20060325071042.2"><vh>@ifplatform darwin</vh>
<v t="ekr.20060325071042.3"><vh>@bool test_darwin_setting = True</vh></v>
</v>
</v>
</v>
<v t="ekr.20171121100639.1"><vh>Declutter</vh>
<v t="tbrown.20150807123339.1"><vh>@bool tree-declutter = False</vh></v>
<v t="tbrown.20150807123421.1"><vh>@data tree-declutter-patterns</vh>
<v t="ekr.20171122113628.1"><vh> About Decluttering</vh>
<v t="ekr.20171122113628.3"><vh>Rule &amp; replacement lines</vh></v>
<v t="ekr.20171122113628.4"><vh>Style lines</vh></v>
</v>
<v t="ekr.20171122044441.3"><vh>declutter: add icon to folders and remove...</vh></v>
<v t="ekr.20171122044441.1"><vh>declutter: demo pattern</vh></v>
<v t="ekr.20171122044417.1"><vh>declutter: hide org-mode tags</vh></v>
<v t="ekr.20171122044441.2"><vh>declutter: replace @&lt;file&gt; with an icon</vh></v>
<v t="ekr.20171122044906.1"><vh>declutter: show last part of long filenames</vh></v>
</v>
</v>
<v t="tbnorth.20170111153412.1"><vh>Editing</vh>
<v t="tbnorth.20170111153417.1"><vh>@int autojustify = 78</vh></v>
<v t="tbnorth.20170111153430.1"><vh>@bool autojustify-on-at-start = False</vh></v>
<v t="chris.20180320083521.1"><vh>@bool word-count = False</vh></v>
</v>
<v t="ekr.20061003173413"><vh>Files &amp; directories</vh>
<v t="ekr.20170706103545.1"><vh>@bool report_unchanged_files = True</vh></v>
<v t="ekr.20061210091932"><vh>@bool chdir_to_relative_path = False</vh></v>
<v t="ekr.20150216135059.1"><vh>@bool create-at-persistence-nodes-automatically = False</vh></v>
<v t="ekr.20041119041304"><vh>@bool create_nonexistent_directories = False</vh></v>
<v t="ekr.20041119034357.5"><vh>@bool read_only = False</vh></v>
<v t="ekr.20170718054928.1"><vh>@bool log_show_save_time = False</vh></v>
<v t="ekr.20170718054951.1"><vh>@string log_timestamp_format = %H:%M:%S</vh></v>
<v t="ekr.20041119041304.1"><vh>@string relative_path_base_directory = .</vh></v>
<v t="ekr.20170706103843.1"><vh>Checking files</vh>
<v t="ekr.20071110153046"><vh>@bool at_auto_warns_about_leading_whitespace = True</vh></v>
<v t="ekr.20150403055250.1"><vh>@bool check_for_changed_external_files = True</vh></v>
<v t="ekr.20090514111518.8379"><vh>@bool check_python_code_on_write = True</vh></v>
<v t="ekr.20161021095001.1"><vh>@bool run-pyflakes-on-write = False</vh></v>
<v t="ekr.20150321090958.1"><vh>@bool verbose_check_outline = False</vh></v>
<v t="ekr.20150710084507.1"><vh>@bool syntax-error-popup = False</vh></v>
</v>
<v t="ekr.20041119034357.12"><vh>External files</vh>
<v t="ekr.20070419103554"><vh>@bool force_newlines_in_at_nosent_bodies = True</vh></v>
<v t="ekr.20041119041747.4"><vh>@bool write_strips_blank_lines = True</vh></v>
<v t="ekr.20041119041747"><vh>@string output_newline = nl</vh></v>
<v t="ekr.20041119041747.1"><vh>@string trailing_body_newlines = one</vh></v>
<v t="ekr.20081216090156.5"><vh>@string underindent-escape-string = \\-</vh></v>
</v>
<v t="ekr.20041119034357.7"><vh>Leo files</vh>
<v t="ekr.20101009103953.8642"><vh>@bool put_expansion_bits_in_leo_files = True</vh></v>
<v t="ekr.20041119034357.8"><vh>@string output_initial_comment = None</vh></v>
<v t="ekr.20041119034357.9"><vh>@string stylesheet = </vh></v>
<v t="ekr.20080921060401.3"><vh>@string default_leo_file = ~/.leo/workbook.leo</vh></v>
<v t="vitalije.20170811125150.1"><vh>@string default_leo_extension = .leo</vh></v>
</v>
<v t="ekr.20110611092035.16474"><vh>Recent files</vh>
<v t="tbrown.20081003103821.1"><vh>@bool recent_files_group = False</vh></v>
<v t="tbrown.20081003103821.2"><vh>@bool recent_files_group_always = False</vh></v>
<v t="ekr.20061009190510"><vh>@bool write_recent_files_as_needed = True</vh></v>
<v t="tbrown.20180212145842.1"><vh>@data path-demangle</vh></v>
</v>
<v t="ekr.20060730101451"><vh>Shadow files</vh>
<v t="ekr.20060730101451.3"><vh>@string shadow_prefix = x</vh></v>
<v t="ekr.20060730101451.5"><vh>@string shadow_subdir = .leo_shadow</vh></v>
</v>
</v>
<v t="ekr.20041119034357.20"><vh>Find/replace options</vh>
<v t="ekr.20141024165714.1"><vh>@bool auto-scroll-find-tab = True</vh></v>
<v t="ekr.20150619190137.1"><vh>@bool close-find-dialog-after-search = False</vh></v>
<v t="ekr.20150629172742.1"><vh>@bool find-ignore-duplicates = False</vh></v>
<v t="ekr.20131119143342.20107"><vh>@bool minibuffer_find_mode = False</vh></v>
<v t="tbrown.20151010094807.1"><vh>@bool show-find-result-in-status = True</vh></v>
<v t="ekr.20060204124608"><vh>@bool minibufferSearchesShowFindTab = True</vh></v>
<v t="ekr.20150710065036.1"><vh>@bool preload-find-pattern = False</vh></v>
<v t="ekr.20041120152900.2"><vh>@bool script_search = None</vh></v>
<v t="ekr.20060125104049"><vh>@bool show_only_find_tab_options = True</vh></v>
<v t="ekr.20150618105435.1"><vh>@bool use_find_dialog = False</vh></v>
<v t="ekr.20041119050105.1"><vh>@string change_text = None</vh></v>
<v t="ekr.20041119050105.2"><vh>@string find_text = None</vh></v>
<v t="ekr.20131119143342.20108"><vh>Find panel defaults</vh>
<v t="ekr.20041119050105.3"><vh>Checkboxes in the Find panel</vh>
<v t="ekr.20041119050105.4"><vh>@bool batch = False</vh></v>
<v t="ekr.20041119050105.5"><vh>@bool ignore_case = True</vh></v>
<v t="ekr.20041119050105.6"><vh>@bool mark_changes = False</vh></v>
<v t="ekr.20041119050105.7"><vh>@bool mark_finds = False</vh></v>
<v t="ekr.20041119050105.9"><vh>@bool reverse = False</vh></v>
<v t="ekr.20041119050105.8"><vh>@bool pattern_match = False</vh></v>
<v t="ekr.20041120152657"><vh>@bool script_change = None</vh></v>
<v t="ekr.20041119050105.14"><vh>@bool search_body = True</vh></v>
<v t="ekr.20041119050105.15"><vh>@bool search_headline = True</vh></v>
<v t="ekr.20041119050105.10"><vh>@bool whole_word = False</vh></v>
<v t="ekr.20041119050105.11"><vh>@bool wrap = False</vh></v>
</v>
<v t="ekr.20110611092035.16476"><vh>Radio buttons in the Find panel</vh>
<v t="ekr.20041119050105.12"><vh>@bool node_only = False</vh></v>
<v t="ekr.20041119050105.16"><vh>@bool suboutline_only = False</vh></v>
</v>
</v>
</v>
<v t="ekr.20110611092035.16480"><vh>Import options</vh>
<v t="ekr.20161011090731.1"><vh>Retired: @bool allow_section_references_in_at_auto = False</vh></v>
<v t="tbrown.20180525163032.1"><vh>@bool add-context-to-headlines = True</vh></v>
<v t="ekr.20101104191857.8345"><vh>@bool at_auto_separate_non_def_nodes = False</vh></v>
<v t="ekr.20070803082435"><vh>@bool full_import_checks = True</vh></v>
<v t="ekr.20161010085256.1"><vh>@bool js_importer_clean_lws = True</vh></v>
<v t="ekr.20170617135317.1"><vh>@bool put_python_decorators_in_imported_headlines = False</vh></v>
<v t="ekr.20161010172424.1"><vh>@int js_importer_min_rescan_size = 0</vh></v>
<v t="ekr.20161010172441.1"><vh>@int js_importer_min_scan_size = 0</vh></v>
<v t="ekr.20080811105020.2"><vh>@bool suppress_import_parsing = False</vh></v>
<v t="ekr.20170825083426.1"><vh>@data c_import_typedefs</vh></v>
<v t="ekr.20111029055127.16616"><vh>@data import_html_tags</vh></v>
<v t="ekr.20111029055127.16614"><vh>@data import_xml_tags</vh></v>
</v>
<v t="ekr.20060122105527.3"><vh>Keyboard and minibuffer options</vh>
<v t="ekr.20180411070112.1"><vh>@bool replace-meta-with-alt = False</vh></v>
<v t="ekr.20160504145653.1"><vh>@bool plain_key_outline_search = True</vh></v>
<v t="ekr.20120205022040.15410"><vh>@bool enable_alt_ctrl_bindings = True</vh></v>
<v t="ekr.20131007055150.13034"><vh>@bool ignore_unbound_non_ascii_keys = False</vh></v>
<v t="ekr.20060122105527.8"><vh>@bool showHelpWhenEnteringModes = False</vh></v>
<v t="ekr.20120205022040.15411"><vh>@bool swap_mac_keys = False</vh></v>
<v t="ekr.20131112161153.4420"><vh>@bool vim-mode = False</vh></v>
<v t="ekr.20060926161207.1"><vh>@bool warn_about_redefined_shortcuts = True</vh></v>
<v t="ekr.20060926161207.2"><vh>@strings  [command,insert, overwrite] top_level_unbound_key_action = insert</vh></v>
</v>
<v t="ekr.20051007200824"><vh>Keyboard shortcuts</vh>
<v t="ekr.20051101160257"><vh>About keyboard shortcuts</vh>
<v t="ekr.20051007200824.1"><vh>About shortcut specifiers</vh></v>
<v t="ekr.20060116090646"><vh>Reference for function keys</vh></v>
</v>
<v t="ekr.20060117092249"><vh>About modes</vh></v>
<v t="ekr.20080514065934.1"><vh>About vim-like bindings</vh></v>
<v t="ekr.20060303075452"><vh>Commands for mouseless Leo</vh></v>
<v t="ekr.20060603215208"><vh>@keys EKR bindings</vh>
<v t="ekr.20080510121331.16"><vh>@@shortcuts  Vim plain keys</vh></v>
<v t="ekr.20080513095644.1"><vh>@mode quick-command :: quick command</vh></v>
<v t="ekr.20080512082834.1"><vh>@shortcuts Arrow keys and the &lt;return&gt; key</vh></v>
<v t="ekr.20080510072134.2"><vh>@shortcuts Changes</vh></v>
<v t="ekr.20060925060533.1"><vh>@shortcuts Cursor Moves</vh></v>
<v t="ville.20090701225947.3902"><vh>@shortcuts Default plugins</vh></v>
<v t="ekr.20090408091222.1"><vh>@shortcuts Duplicate bindings for Qt</vh></v>
<v t="ekr.20120305084218.11271"><vh>@shortcuts F-Keys</vh></v>
<v t="ekr.20060925061845"><vh>@shortcuts File commands</vh></v>
<v t="ekr.20060603215208.19"><vh>@shortcuts Find commands</vh></v>
<v t="ekr.20060925060533.2"><vh>@shortcuts Gui operations</vh></v>
<v t="ekr.20080204124255"><vh>@shortcuts IPython commands</vh></v>
<v t="ekr.20070613133747"><vh>@shortcuts Menu commands</vh></v>
<v t="ekr.20060603215208.20"><vh>@shortcuts Minibuffer commands</vh></v>
<v t="ekr.20060925061845.1"><vh>@shortcuts Other commands</vh></v>
<v t="ekr.20060925060533.3"><vh>@shortcuts Outline operations</vh></v>
<v t="ekr.20131003040744.17561"><vh>@shortcuts Plugin-related commands </vh></v>
<v t="ekr.20060925060533.4"><vh>@shortcuts Text operations</vh></v>
</v>
<v t="ekr.20140721165014.19146"><vh>@ignore Unused key bindings</vh>
<v t="ekr.20140721165014.19313"><vh>Vim emulation</vh>
<v t="ekr.20140721165014.19147"><vh>@strings  [ignore,insert, overwrite] top_level_unbound_key_action = ignore</vh></v>
<v t="ekr.20140721165014.19159"><vh>@keys Vim bindings</vh>
<v t="ekr.20140721165014.19160"><vh>Vim User Documentation</vh></v>
<v t="ekr.20140721165014.19161"><vh>Vim History</vh></v>
<v t="ekr.20140721165014.19162"><vh>Vim Developer Documentation</vh></v>
<v t="ekr.20140721165014.19163"><vh>Vim settings</vh>
<v t="ekr.20140721165014.19164"><vh>@strings [command,insert, overwrite] top_level_unbound_key_action = command</vh></v>
<v t="ekr.20140721165014.19165"><vh>@bool stayInTreeAfterEditHeadline = True</vh></v>
<v t="ekr.20140721165014.19166"><vh>@bool outline_pane_has_initial_focus = True</vh></v>
<v t="ekr.20140721165014.19167"><vh>@bool stayInTreeAfterSelect = True</vh></v>
</v>
<v t="ekr.20140721165014.19168"><vh>@shortcuts - vi miscellaneous</vh>
<v t="ekr.20140721165014.19169"><vh>@mode tree-undo</vh></v>
<v t="ekr.20140721165014.19170"><vh>@mode tree-redo</vh></v>
<v t="ekr.20140721165014.19171"><vh>@mode focus-to-tree</vh></v>
<v t="ekr.20140721165014.19172"><vh>@mode focus-to-body</vh></v>
<v t="ekr.20140721165014.19173"><vh>@mode body-command-line</vh>
<v t="ekr.20140721165014.19174"><vh>@mode body-command-revert</vh></v>
<v t="ekr.20140721165014.19175"><vh>@mode body-command-save</vh>
<v t="ekr.20140721165014.19176"><vh>@mode body-command-save-quit</vh>
<v t="ekr.20140721165014.19177"><vh>@mode body-command-save-quit-return</vh></v>
</v>
</v>
<v t="ekr.20140721165014.19178"><vh>@mode body-command-quit</vh></v>
</v>
<v t="ekr.20140721165014.19179"><vh>@mode tree-command-line</vh>
<v t="ekr.20140721165014.19180"><vh>@mode tree-command-revert</vh></v>
<v t="ekr.20140721165014.19181"><vh>@mode tree-command-save</vh>
<v t="ekr.20140721165014.19182"><vh>@mode tree-command-save-only</vh></v>
<v t="ekr.20140721165014.19183"><vh>@mode tree-command-save-quit</vh>
<v t="ekr.20140721165014.19184"><vh>@mode tree-command-save-quit-return</vh></v>
</v>
</v>
<v t="ekr.20140721165014.19185"><vh>@mode tree-command-quit</vh></v>
</v>
<v t="ekr.20140721165014.19186"><vh>@mode body-shift-z</vh>
<v t="ekr.20140721165014.19187"><vh>@mode body-shift-z-save-quit</vh></v>
</v>
</v>
<v t="ekr.20140721165014.19188"><vh>@shortcuts - vi in Outline pane</vh>
<v t="ekr.20140721165014.19189"><vh>@mode tree-yank-object</vh></v>
<v t="ekr.20140721165014.19190"><vh>@mode tree-change-object</vh></v>
<v t="ekr.20140721165014.19191"><vh>@mode tree-delete-text-object</vh></v>
<v t="ekr.20140721165014.19192"><vh>@mode tree-copy-node</vh></v>
<v t="ekr.20140721165014.19193"><vh>@mode tree-paste-node</vh></v>
<v t="ekr.20140721165014.19194"><vh>@mode tree-delete-node</vh></v>
<v t="ekr.20140721165014.19195"><vh>@mode tree-goto-last-node</vh></v>
<v t="ekr.20140721165014.19196"><vh>@mode tree-goto</vh>
<v t="ekr.20140721165014.19197"><vh>@mode node-goto-first-node</vh></v>
</v>
<v t="ekr.20140721165014.19198"><vh>@mode tree-goto-next-visible</vh></v>
<v t="ekr.20140721165014.19199"><vh>@mode tree-goto-prev-visible</vh></v>
<v t="ekr.20140721165014.19200"><vh>@mode tree-search-forward</vh></v>
<v t="ekr.20140721165014.19201"><vh>@mode tree-replace-string</vh></v>
<v t="ekr.20140721165014.19202"><vh>@mode tree-contract-or-go-left</vh></v>
<v t="ekr.20140721165014.19203"><vh>@mode tree-contract-node</vh></v>
<v t="ekr.20140721165014.19204"><vh>@mode tree-expand-and-go-right</vh></v>
<v t="ekr.20140721165014.19205"><vh>@mode tree-move-outline-up</vh></v>
<v t="ekr.20140721165014.19206"><vh>@mode tree-move-outline-down</vh></v>
<v t="ekr.20140721165014.19207"><vh>@mode tree-move-outline-left</vh></v>
<v t="ekr.20140721165014.19208"><vh>@mode tree-move-outline-right</vh></v>
<v t="ekr.20140721165014.19209"><vh>@mode tree-clone-node</vh></v>
<v t="ekr.20140721165014.19210"><vh>@mode tree-goto-next-clone-node</vh></v>
<v t="ekr.20140721165014.19211"><vh>@mode tree-mark-node</vh></v>
<v t="ekr.20140721165014.19212"><vh>@mode tree-goto-next-marked-node</vh></v>
<v t="ekr.20140721165014.19213"><vh>@mode tree-unmark-all-nodes</vh></v>
<v t="ekr.20140721165014.19214"><vh>Body actions from Tree pane</vh>
<v t="ekr.20140721165014.19215"><vh>@mode tree-goto-next-line</vh></v>
<v t="ekr.20140721165014.19216"><vh>@mode tree-goto-prev-line</vh></v>
</v>
</v>
<v t="ekr.20140721165014.19217"><vh>@shortcuts - vi in Body pane</vh>
<v t="ekr.20140721165014.19218"><vh>@mode body-search-forward</vh></v>
<v t="ekr.20140721165014.19219"><vh>@mode body-search-backward</vh></v>
<v t="ekr.20140721165014.19220"><vh>@mode body-search-everywhere</vh></v>
<v t="ekr.20140721165014.19221"><vh>@mode body-search-options</vh>
<v t="ekr.20140721165014.19222"><vh>@mode body-search-all-nodes</vh></v>
<v t="ekr.20140721165014.19223"><vh>@mode body-search-toggle-headline</vh></v>
<v t="ekr.20140721165014.19224"><vh>@mode body-search-toggle-body</vh></v>
<v t="ekr.20140721165014.19225"><vh>@mode body-search-toggle-mark</vh>
<v t="ekr.20140721165014.19226"><vh>@mode body-search-toggle-mark-finds</vh></v>
<v t="ekr.20140721165014.19227"><vh>@mode body-search-toggle-mark-changes</vh></v>
</v>
<v t="ekr.20140721165014.19228"><vh>@mode body-search-toggle-regex</vh></v>
</v>
<v t="ekr.20140721165014.19229"><vh>@mode body-replace-string</vh></v>
<v t="ekr.20140721165014.19230"><vh>@mode body-paste-then-find</vh></v>
<v t="ekr.20140721165014.19231"><vh>@mode body-goto-end-of-buffer</vh></v>
<v t="ekr.20140721165014.19232"><vh>@mode body-g</vh>
<v t="ekr.20140721165014.19233"><vh>@mode body-g-beginning-of-buffer</vh>
<v t="ekr.20140721165014.19234"><vh>@mode body-g-q</vh></v>
<v t="ekr.20140721165014.19235"><vh>@mode body-g-w</vh>
<v t="ekr.20140721165014.19236"><vh>@mode body-g-wq-a</vh></v>
</v>
</v>
</v>
<v t="ekr.20140721165014.19237"><vh>@mode body-new-line-below</vh></v>
<v t="ekr.20140721165014.19238"><vh>@mode body-new-line-above</vh></v>
<v t="ekr.20140721165014.19239"><vh>@mode body-append</vh></v>
<v t="ekr.20140721165014.19240"><vh>@mode body-insert-at-indent</vh></v>
<v t="ekr.20140721165014.19241"><vh>@mode body-delete-to-end-of-line</vh></v>
<v t="ekr.20140721165014.19242"><vh>@mode body-delete-object</vh>
<v t="ekr.20140721165014.19243"><vh>@mode body-delete-line</vh></v>
<v t="ekr.20140721165014.19244"><vh>@mode body-delete-to-end-of-word</vh></v>
<v t="ekr.20140721165014.19245"><vh>@mode body-delete-to-begin-of-word</vh></v>
<v t="ekr.20140721165014.19246"><vh>@mode body-delete-to-end-of-sentence</vh></v>
<v t="ekr.20140721165014.19247"><vh>@mode body-delete-to-beginning-of-sentence</vh></v>
<v t="ekr.20140721165014.19248"><vh>@mode body-delete-to-end-of-paragraph</vh></v>
<v t="ekr.20140721165014.19249"><vh>@mode body-delete-to-beginning-of-paragraph</vh></v>
<v t="ekr.20140721165014.19250"><vh>@mode body-delete-to-g-object</vh>
<v t="ekr.20140721165014.19251"><vh>@mode body-delete-to-beginning-of-buffer</vh></v>
</v>
<v t="ekr.20140721165014.19252"><vh>@mode body-delete-to-end-of-buffer</vh></v>
<v t="ekr.20140721165014.19253"><vh>@mode body-delete-section</vh></v>
<v t="ekr.20140721165014.19254"><vh>@mode body-delete-to-char</vh></v>
<v t="ekr.20140721165014.19255"><vh>@mode body-delete-selected</vh></v>
</v>
<v t="ekr.20140721165014.19256"><vh>@mode body-yank-to-end-of-line</vh></v>
<v t="ekr.20140721165014.19257"><vh>@mode body-yank-object</vh>
<v t="ekr.20140721165014.19258"><vh>@mode body-yank-line</vh></v>
<v t="ekr.20140721165014.19259"><vh>@mode body-yank-to-beginning-of-next-word</vh></v>
<v t="ekr.20140721165014.19260"><vh>@mode body-yank-to-beginning-of-current-word</vh></v>
<v t="ekr.20140721165014.19261"><vh>@mode body-yank-to-end-of-sentence</vh></v>
<v t="ekr.20140721165014.19262"><vh>@mode body-yank-to-beginning-of-sentence</vh></v>
<v t="ekr.20140721165014.19263"><vh>@mode body-yank-to-end-of-paragraph</vh></v>
<v t="ekr.20140721165014.19264"><vh>@mode body-yank-to-beginning-of-paragraph</vh></v>
<v t="ekr.20140721165014.19265"><vh>@mode body-yank-to-g-object</vh>
<v t="ekr.20140721165014.19266"><vh>@mode body-yank-to-beginning-of-buffer</vh></v>
</v>
<v t="ekr.20140721165014.19267"><vh>@mode body-yank-to-end-of-buffer</vh></v>
<v t="ekr.20140721165014.19268"><vh>@mode body-yank-section</vh></v>
<v t="ekr.20140721165014.19269"><vh>@mode body-yank-selected</vh></v>
</v>
<v t="ekr.20140721165014.19270"><vh>@mode body-change-to-end-of-line</vh></v>
<v t="ekr.20140721165014.19271"><vh>@mode body-change-object</vh>
<v t="ekr.20140721165014.19272"><vh>@mode body-change-line</vh></v>
<v t="ekr.20140721165014.19273"><vh>@mode body-change-to-end-of-word</vh></v>
<v t="ekr.20140721165014.19274"><vh>@mode body-change-to-beginning-of-word</vh></v>
<v t="ekr.20140721165014.19275"><vh>@mode body-change-to-end-of-sentence</vh></v>
<v t="ekr.20140721165014.19276"><vh>@mode body-change-to-beginning-of-sentence</vh></v>
<v t="ekr.20140721165014.19277"><vh>@mode body-change-to-end-of-paragraph</vh></v>
<v t="ekr.20140721165014.19278"><vh>@mode body-change-to-beginning-of-paragraph</vh></v>
<v t="ekr.20140721165014.19279"><vh>@mode body-change-to-g-object</vh>
<v t="ekr.20140721165014.19280"><vh>@mode body-change-to-beginning-of-buffer</vh></v>
</v>
<v t="ekr.20140721165014.19281"><vh>@mode body-change-to-end-of-buffer</vh></v>
<v t="ekr.20140721165014.19282"><vh>@mode body-change-section</vh></v>
<v t="ekr.20140721165014.19283"><vh>@mode body-change-selected</vh></v>
</v>
<v t="ekr.20140721165014.19284"><vh>@mode body-substitute-char</vh></v>
<v t="ekr.20140721165014.19285"><vh>@mode body-substitute-line</vh></v>
<v t="ekr.20140721165014.19286"><vh>@mode body-indent</vh>
<v t="ekr.20140721165014.19287"><vh>@mode body-indent-line</vh></v>
<v t="ekr.20140721165014.19288"><vh>@mode body-indent-to-end-of-sentence</vh></v>
<v t="ekr.20140721165014.19289"><vh>@mode body-indent-to-beginning-of-sentence</vh></v>
<v t="ekr.20140721165014.19290"><vh>@mode body-indent-to-end-of-paragraph</vh></v>
<v t="ekr.20140721165014.19291"><vh>@mode body-indent-to-beginning-of-paragraph</vh></v>
<v t="ekr.20140721165014.19292"><vh>@mode body-indent-to-beginning-of-buffer</vh></v>
<v t="ekr.20140721165014.19293"><vh>@mode body-indent-to-end-of-buffer</vh></v>
</v>
<v t="ekr.20140721165014.19294"><vh>@mode body-unindent</vh>
<v t="ekr.20140721165014.19295"><vh>@mode body-unindent-less</vh></v>
<v t="ekr.20140721165014.19296"><vh>@mode body-unindent-to-end-of-paragraph</vh></v>
<v t="ekr.20140721165014.19297"><vh>@mode body-unindent-to-beginning-of-paragraph</vh></v>
<v t="ekr.20140721165014.19298"><vh>@mode body-unindent-to-end-of-sentence</vh></v>
<v t="ekr.20140721165014.19299"><vh>@mode body-unindent-to-beginning-of-sentence</vh></v>
<v t="ekr.20140721165014.19300"><vh>@mode body-unindent-to-end-of-buffer</vh></v>
<v t="ekr.20140721165014.19301"><vh>@mode body-unindent-to-beginning-of-buffer</vh></v>
</v>
<v t="ekr.20140721165014.19302"><vh>@mode body-goto-indent-previous-line</vh></v>
<v t="ekr.20140721165014.19303"><vh>@mode body-goto-after-paragraph</vh></v>
<v t="ekr.20140721165014.19304"><vh>@mode body-goto-before-paragraph</vh></v>
<v t="ekr.20140721165014.19305"><vh>@mode body-join</vh></v>
<v t="ekr.20140721165014.19306"><vh>@mode body-match</vh></v>
<v t="ekr.20140721165014.19307"><vh>Tree actions from Body pane</vh>
<v t="ekr.20140721165014.19308"><vh>@mode body-goto-next-visible</vh></v>
<v t="ekr.20140721165014.19309"><vh>@mode body-goto-prev-visible</vh></v>
<v t="ekr.20140721165014.19310"><vh>@mode body-expand-and-go-right</vh></v>
<v t="ekr.20140721165014.19311"><vh>@mode body-contract-or-go-left</vh></v>
</v>
<v t="ekr.20140721165014.19312"><vh>@mode vim-window-commands</vh></v>
</v>
</v>
</v>
<v t="ekr.20161014152934.1"><vh>@keys MacOS keys</vh>
<v t="ekr.20161014152921.1"><vh>@shortcuts</vh></v>
</v>
<v t="ekr.20140721165014.19148"><vh>@keys Default Emacs shortcuts</vh>
<v t="ekr.20140721165014.19149"><vh>@shortcuts Emacs: A-E</vh></v>
<v t="ekr.20140721165014.19150"><vh>@shortcuts Emacs: F-M</vh></v>
<v t="ekr.20140721165014.19151"><vh>@shortcuts Emacs: N-Z</vh></v>
<v t="ekr.20140721165014.19152"><vh>@shortcuts Emacs: missing</vh></v>
<v t="ekr.20140721165014.19153"><vh>@shortcuts shift-f-keys</vh></v>
</v>
<v t="ekr.20140721165014.19154"><vh>@keys No bindings</vh>
<v t="ekr.20140721165014.19155"><vh>@shortcuts No bindings: A-E</vh></v>
<v t="ekr.20140721165014.19156"><vh>@shortcuts No bindings: F-M</vh></v>
<v t="ekr.20140721165014.19157"><vh>@shortcuts No bindings: N-Z</vh></v>
<v t="ekr.20140721165014.19158"><vh>@shortcuts shift-f-keys</vh></v>
</v>
</v>
</v>
<v t="ekr.20110611092035.16491"><vh>Leo Directives</vh>
<v t="ekr.20041119034357.32"><vh>@int page_width = 80</vh></v>
<v t="ekr.20041119034357.31"><vh>@int tab_width = -4</vh></v>
</v>
<v t="ekr.20070925144552"><vh>Menus</vh>
<v t="ekr.20071010123015"><vh>@@menu 文件</vh>
<v t="ekr.20071010123015.1"><vh>@item new</vh></v>
<v t="ekr.20071010123223.1"><vh>@item open-outline</vh></v>
</v>
<v t="ekr.20131213135427.21826"><vh>@menus</vh>
<v t="ekr.20131213135427.21827"><vh>@menu &amp;File</vh>
<v t="ekr.20131213135427.21833"><vh>@item &amp;close-window</vh></v>
<v t="ekr.20140917063815.21917"><vh>@item &amp;file-open-by-name</vh></v>
<v t="ekr.20131213135427.21828"><vh>@item &amp;new</vh></v>
<v t="ekr.20131213135427.21829"><vh>@item &amp;open-outline</vh></v>
<v t="ekr.20180403155811.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21830"><vh>@menu Open &amp;With</vh></v>
<v t="ekr.20151225142626.1"><vh>@menu Open Specific &amp;Leo File</vh>
<v t="ekr.20131213135427.21871"><vh>@item open-cheat-sheet-leo</vh></v>
<v t="ekr.20131213135427.21872"><vh>@item open-leo-docs-leo</vh></v>
<v t="ekr.20161025090757.1"><vh>@item open-leo-dist-leo</vh></v>
<v t="ekr.20131213135427.21873"><vh>@item open-leo-plugins-leo</vh></v>
<v t="ekr.20151225193848.1"><vh>@item open-leo-py-leo</vh></v>
<v t="ekr.20170323095822.1"><vh>@item open-my-leo-settings</vh></v>
<v t="ekr.20131213135427.21874"><vh>@item open-quickstart-leo</vh></v>
<v t="ekr.20131213135427.21875"><vh>@item open-scripts-leo</vh></v>
<v t="ekr.20170323095724.1"><vh>@item open-leo-settings-leo</vh></v>
<v t="ekr.20151225094956.1"><vh>@item open-unittest-leo</vh></v>
</v>
<v t="ekr.20131213135427.21831"><vh>@menu Recent Files</vh></v>
<v t="ekr.20131213135427.21832"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21834"><vh>@item save-file</vh></v>
<v t="ekr.20131213135427.21835"><vh>@item save-file-as</vh></v>
<v t="ekr.20131213135427.21836"><vh>@item save-file-as-unzipped</vh></v>
<v t="ekr.20131213135427.21837"><vh>@item save-file-as-zipped</vh></v>
<v t="ekr.20131213135427.21838"><vh>@item save-file-to</vh></v>
<v t="ekr.20140718064506.18998"><vh>@item -</vh></v>
<v t="ekr.20180403105112.1"><vh>@menu &amp;Compare/Diff Files</vh>
<v t="ekr.20131213135427.22149"><vh>@item file-&amp;compare-two-leo-files</vh></v>
<v t="ekr.20131213135427.22151"><vh>@item file-diff-&amp;files</vh></v>
</v>
<v t="ekr.20131213135427.22139"><vh>@menu &amp;Create/Remove Files Or Directories</vh>
<v t="ekr.20131213135427.22140"><vh>@item directory-&amp;make</vh></v>
<v t="ekr.20131213135427.22141"><vh>@item directory-&amp;remove</vh></v>
<v t="ekr.20131213135427.22148"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22150"><vh>@item file-&amp;delete</vh></v>
<v t="ekr.20131213135427.22152"><vh>@item file-&amp;insert</vh></v>
</v>
<v t="ekr.20131213135427.21841"><vh>@menu &amp;Read/Write Files</vh>
<v t="ekr.20131213135427.21842"><vh>@item check-derived-file</vh></v>
<v t="ekr.20131213135427.21843"><vh>@item check-leo-file</vh></v>
<v t="ekr.20131213135427.21844"><vh>@item file-compare-two-leo-files</vh></v>
<v t="ekr.20131213135427.21845"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21846"><vh>@item read-outline-only</vh></v>
<v t="ekr.20131213135427.21847"><vh>@item read-file-into-node</vh></v>
<v t="ekr.20131213135427.21848"><vh>@item read-at-auto-nodes</vh></v>
<v t="ekr.20131213135427.21849"><vh>@item read-at-file-nodes</vh></v>
<v t="ekr.20131213135427.21850"><vh>@item read-at-shadow-nodes</vh></v>
<v t="ekr.20131213135427.21851"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21852"><vh>@item write-outline-only</vh></v>
<v t="ekr.20131213135427.21853"><vh>@item write-file-from-node</vh></v>
<v t="ekr.20131213135427.21854"><vh>@item write-at-auto-nodes</vh></v>
<v t="ekr.20131213135427.21855"><vh>@item write-at-file-nodes</vh></v>
<v t="ekr.20131213135427.21856"><vh>@item write-at-shadow-nodes</vh></v>
<v t="ekr.20131213135427.21857"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21858"><vh>@item write-dirty-at-auto-nodes</vh></v>
<v t="ekr.20131213135427.21859"><vh>@item write-dirty-at-file-nodes</vh></v>
<v t="ekr.20131213135427.21860"><vh>@item write-dirty-at-shadow-nodes</vh></v>
<v t="ekr.20131213135427.21861"><vh>@item write-missing-at-file-nodes</vh></v>
</v>
<v t="ekr.20161006072026.1"><vh>@menu &amp;Import Files</vh>
<v t="ekr.20131213135427.21862"><vh>@item import-file</vh></v>
<v t="ekr.20161006072143.1"><vh>@item import-free-mind-files</vh></v>
<v t="ekr.20161006093610.1"><vh>@item import-mind-jet-files</vh></v>
<v t="ekr.20161006102148.1"><vh>@item import-MORE-files</vh></v>
<v t="ekr.20161007090350.1"><vh>@item import-jupyter-notebook</vh></v>
<v t="ekr.20161006072041.1"><vh>@item import-tabbed-files</vh></v>
<v t="ekr.20161006093513.1"><vh>@item import-zim-folder</vh></v>
</v>
<v t="ekr.20131213135427.21863"><vh>@menu &amp;Export Files</vh>
<v t="ekr.20131213135427.21864"><vh>@item export-headlines</vh></v>
<v t="ekr.20161007090445.1"><vh>@item export-jupyter-notebook</vh></v>
<v t="ekr.20131213135427.21865"><vh>@item flatten-outline</vh></v>
<v t="ekr.20131213135427.21866"><vh>@item outline-to-cweb</vh></v>
<v t="ekr.20131213135427.21867"><vh>@item outline-to-noweb</vh></v>
<v t="ekr.20131213135427.21868"><vh>@item remove-sentinels</vh></v>
<v t="ekr.20131213135427.21869"><vh>@item weave</vh></v>
</v>
<v t="ekr.20150420115709.1"><vh>@menu &amp;Print</vh>
<v t="ekr.20150420115903.1"><vh>@item print-body	</vh></v>
<v t="ekr.20150420115928.1"><vh>@item print-html</vh></v>
<v t="ekr.20150420120009.1"><vh>@item print-node</vh></v>
<v t="ekr.20150420120016.1"><vh>@item -</vh></v>
<v t="peckj.20150421103626.1"><vh>@item print-expanded-body</vh></v>
<v t="peckj.20150421103633.1"><vh>@item print-expanded-html</vh></v>
<v t="peckj.20150421103639.1"><vh>@item -</vh></v>
<v t="ekr.20150420120025.1"><vh>@item print-marked-bodies</vh></v>
<v t="ekr.20150420120034.1"><vh>@item print-marked-html</vh></v>
<v t="ekr.20150420120051.1"><vh>@item print-marked-nodes</vh></v>
<v t="ekr.20150420120105.1"><vh>@item -</vh></v>
<v t="ekr.20150420120154.1"><vh>@item print-tree-nodes</vh></v>
<v t="ekr.20150420120114.1"><vh>@item print-tree-bodies</vh></v>
<v t="ekr.20150420115936.1"><vh>@item print-tree-html</vh></v>
</v>
<v t="ekr.20150420122804.1"><vh>@menu &amp;Print Preview</vh>
<v t="ekr.20150420122804.2"><vh>@item preview-body	</vh></v>
<v t="ekr.20150420122804.3"><vh>@item preview-html</vh></v>
<v t="ekr.20150420122804.4"><vh>@item preview-node</vh></v>
<v t="ekr.20150420122804.5"><vh>@item -</vh></v>
<v t="peckj.20150421103556.1"><vh>@item preview-expanded-body</vh></v>
<v t="peckj.20150421103611.1"><vh>@item preview-expanded-html</vh></v>
<v t="peckj.20150421103616.1"><vh>@item -</vh></v>
<v t="ekr.20150420122804.6"><vh>@item preview-marked-bodies</vh></v>
<v t="ekr.20150420122804.7"><vh>@item preview-marked-html</vh></v>
<v t="ekr.20150420122804.8"><vh>@item preview-marked-nodes</vh></v>
<v t="ekr.20150420122804.9"><vh>@item -</vh></v>
<v t="ekr.20150420122804.10"><vh>@item preview-tree-nodes</vh></v>
<v t="ekr.20150420122804.11"><vh>@item preview-tree-bodies</vh></v>
<v t="ekr.20150420122804.12"><vh>@item preview-tree-html</vh></v>
</v>
<v t="ekr.20180403153650.1"><vh>@menu &amp;Revert/Refresh Files</vh>
<v t="ekr.20140718064506.18999"><vh>@item refresh-from-disk</vh></v>
<v t="ekr.20131213135427.21839"><vh>@item revert</vh></v>
</v>
<v t="ekr.20131213135427.21876"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21877"><vh>@item exit-leo</vh></v>
</v>
<v t="ekr.20131213135427.21878"><vh>@menu &amp;Edit</vh>
<v t="ekr.20131213135427.21879"><vh>@item &amp;undo</vh></v>
<v t="ekr.20131213135427.21880"><vh>@item &amp;redo</vh></v>
<v t="ekr.20131213135427.21881"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21882"><vh>@item &amp;cut-text</vh></v>
<v t="ekr.20131213135427.21883"><vh>@item &amp;copy-text</vh></v>
<v t="ekr.20131213135427.21884"><vh>@item &amp;paste-text</vh></v>
<v t="ekr.20131213135427.21886"><vh>@item &amp;select-all</vh></v>
<v t="ekr.20180403115138.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22260"><vh>@menu &amp;Check Spelling</vh>
<v t="ekr.20131213135427.22261"><vh>@item &amp;spell-tab-open</vh></v>
<v t="ekr.20131213135427.22262"><vh>@item spell-&amp;change</vh></v>
<v t="ekr.20131213135427.22263"><vh>@item spell-change-&amp;then-find</vh></v>
<v t="ekr.20131213135427.22264"><vh>@item spell-&amp;find</vh></v>
<v t="ekr.20131213135427.22265"><vh>@item spell-&amp;ignore</vh></v>
</v>
<v t="ekr.20131213135427.21904"><vh>@menu &amp;Edit Headline</vh>
<v t="ekr.20131213135427.21905"><vh>@item edit-&amp;headline</vh></v>
<v t="ekr.20131213135427.21906"><vh>@item &amp;end-edit-headline</vh></v>
<v t="ekr.20131213135427.21907"><vh>@item &amp;abort-edit-headline</vh></v>
<v t="ekr.20131213135427.21908"><vh>@item insert-headline-&amp;time</vh></v>
</v>
<v t="ekr.20131213135427.22266"><vh>@menu &amp;Edit Text</vh>
<v t="ekr.20131213135427.21885"><vh>@item &amp;backward-delete-char</vh></v>
<v t="ekr.20180403154327.1"><vh>@item -</vh></v>
<v t="ekr.20180403114818.1"><vh>@menu &amp;Add/Delete Comments</vh>
<v t="ekr.20131213135427.21902"><vh>@item &amp;add-comments</vh></v>
<v t="ekr.20131213135427.21903"><vh>@item &amp;delete-comments</vh></v>
</v>
<v t="ekr.20180403104616.1"><vh>@menu &amp;Align text</vh>
<v t="ekr.20131213135427.22270"><vh>@item center-&amp;line</vh></v>
<v t="ekr.20131213135427.22271"><vh>@item center-&amp;region</vh></v>
</v>
<v t="ekr.20180403104558.1"><vh>@menu &amp;Beautify Text</vh>
<v t="ekr.20170316105542.1"><vh>@item beautify-&amp;c</vh></v>
<v t="ekr.20131213135427.22267"><vh>@item &amp;beautify-node</vh></v>
<v t="ekr.20131213135427.22268"><vh>@item beautify-&amp;tree</vh></v>
</v>
<v t="ekr.20180403104751.1"><vh>@menu &amp;Capitalize Text</vh>
<v t="ekr.20131213135427.22273"><vh>@item &amp;capitalize-word</vh></v>
<v t="ekr.20131213135427.22277"><vh>@item d&amp;owncase-region</vh></v>
<v t="ekr.20131213135427.22274"><vh>@item &amp;downcase-word</vh></v>
<v t="ekr.20131213135427.22278"><vh>@item u&amp;pcase-region</vh></v>
<v t="ekr.20131213135427.22275"><vh>@item &amp;upcase-word</vh></v>
</v>
<v t="ekr.20180403114558.1"><vh>@menu &amp;Convert/View Tabs Or Blanks</vh>
<v t="ekr.20131213135427.21892"><vh>@item convert-all-b&amp;lanks</vh></v>
<v t="ekr.20131213135427.21893"><vh>@item convert-all-t&amp;abs</vh></v>
<v t="ekr.20131213135427.21894"><vh>@item convert-&amp;blanks</vh></v>
<v t="ekr.20131213135427.21895"><vh>@item convert-&amp;tabs</vh></v>
<v t="ekr.20131213135427.21912"><vh>@item &amp;toggle-invisibles</vh></v>
</v>
<v t="ekr.20180403114533.1"><vh>@menu &amp;Create Sections</vh>
<v t="ekr.20131213135427.21889"><vh>@item extract-&amp;names</vh></v>
<v t="ekr.20131213135427.21890"><vh>@item &amp;extract</vh></v>
</v>
<v t="ekr.20131213135427.22205"><vh>@menu &amp;Edit Rectangular Areas</vh>
<v t="ekr.20131213135427.22206"><vh>@item rectangle-&amp;clear</vh></v>
<v t="ekr.20131213135427.22207"><vh>@item rectangle-&amp;close</vh></v>
<v t="ekr.20131213135427.22208"><vh>@item rectangle-&amp;delete</vh></v>
<v t="ekr.20131213135427.22209"><vh>@item rectangle-&amp;kill</vh></v>
<v t="ekr.20131213135427.22210"><vh>@item rectangle-&amp;open</vh></v>
<v t="ekr.20131213135427.22211"><vh>@item rectangle-&amp;string</vh></v>
<v t="ekr.20131213135427.22212"><vh>@item rectangle-&amp;yank</vh></v>
</v>
<v t="ekr.20180403104732.1"><vh>@menu &amp;Indent Text</vh>
<v t="ekr.20131213135427.22282"><vh>@item indent-ri&amp;gidly</vh></v>
<v t="ekr.20131213135427.22280"><vh>@item &amp;indent-region</vh></v>
<v t="ekr.20131213135427.22281"><vh>@item indent-r&amp;elative</vh></v>
<v t="ekr.20131213135427.22283"><vh>@item u&amp;nindent-region</vh></v>
</v>
<v t="ekr.20131213135427.22079"><vh>@menu &amp;Move Cursor And Make Selections</vh>
<v t="ekr.20131213135427.21901"><vh>@item &amp;match-brackets</vh></v>
<v t="ekr.20180403154314.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22080"><vh>@menu Cursor &amp;Back</vh>
<v t="ekr.20131213135427.22081"><vh>@item back-&amp;char</vh></v>
<v t="ekr.20131213135427.22082"><vh>@item back-&amp;paragraph</vh></v>
<v t="ekr.20131213135427.22083"><vh>@item back-&amp;sentence</vh></v>
<v t="ekr.20131213135427.22084"><vh>@item back-&amp;word</vh></v>
<v t="ekr.20131213135427.22085"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22086"><vh>@item beginning-of-&amp;buffer</vh></v>
<v t="ekr.20131213135427.22087"><vh>@item beginning-of-&amp;line</vh></v>
<v t="ekr.20131213135427.22088"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22089"><vh>@item pre&amp;vious-line</vh></v>
</v>
<v t="ekr.20131213135427.22090"><vh>@menu Cursor Back &amp;Extend Selection</vh>
<v t="ekr.20131213135427.22091"><vh>@item back-&amp;char-extend-selection</vh></v>
<v t="ekr.20131213135427.22092"><vh>@item back-&amp;paragraph-extend-selection</vh></v>
<v t="ekr.20131213135427.22093"><vh>@item back-&amp;sentence-extend-selection</vh></v>
<v t="ekr.20131213135427.22094"><vh>@item back-&amp;word-extend-selection</vh></v>
<v t="ekr.20131213135427.22095"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22096"><vh>@item beginning-of-&amp;buffer-extend-selection</vh></v>
<v t="ekr.20131213135427.22097"><vh>@item beginning-of-&amp;line-extend-selection</vh></v>
<v t="ekr.20131213135427.22098"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22099"><vh>@item pre&amp;vious-line-extend-selection</vh></v>
</v>
<v t="ekr.20131213135427.22100"><vh>@menu Cursor Back Extend &amp;to</vh>
<v t="ekr.20131213135427.22101"><vh>@item extend-to-&amp;line</vh></v>
<v t="ekr.20131213135427.22102"><vh>@item extend-to-&amp;paragraph</vh></v>
<v t="ekr.20131213135427.22103"><vh>@item extend-to-&amp;sentence</vh></v>
<v t="ekr.20131213135427.22104"><vh>@item extend-to-&amp;word</vh></v>
</v>
<v t="ekr.20131213135427.22105"><vh>@menu Cursor &amp;Forward</vh>
<v t="ekr.20131213135427.22106"><vh>@item end-of-&amp;buffer</vh></v>
<v t="ekr.20131213135427.22107"><vh>@item end-of-&amp;line</vh></v>
<v t="ekr.20131213135427.22108"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22109"><vh>@item forward-&amp;char</vh></v>
<v t="ekr.20131213135427.22110"><vh>@item forward-&amp;paragraph</vh></v>
<v t="ekr.20131213135427.22111"><vh>@item forward-&amp;sentence</vh></v>
<v t="ekr.20131213135427.22112"><vh>@item forward-&amp;end-word</vh></v>
<v t="ekr.20131213135427.22113"><vh>@item forward-&amp;word</vh></v>
<v t="ekr.20131213135427.22114"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22115"><vh>@item &amp;next-line</vh></v>
</v>
<v t="ekr.20131213135427.22116"><vh>@menu Cursor Forward E&amp;xtend Selection</vh>
<v t="ekr.20131213135427.22117"><vh>@item end-of-&amp;buffer-extend-selection</vh></v>
<v t="ekr.20131213135427.22118"><vh>@item end-of-&amp;line-extend-selection</vh></v>
<v t="ekr.20131213135427.22119"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22120"><vh>@item forward-&amp;char-extend-selection</vh></v>
<v t="ekr.20131213135427.22121"><vh>@item forward-&amp;paragraph-extend-selection</vh></v>
<v t="ekr.20131213135427.22122"><vh>@item forward-&amp;sentence-extend-selection</vh></v>
<v t="ekr.20131213135427.22123"><vh>@item forward-&amp;end-word-extend-selection</vh></v>
<v t="ekr.20131213135427.22124"><vh>@item forward-&amp;word-extend-selection</vh></v>
<v t="ekr.20131213135427.22125"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22126"><vh>@item &amp;next-line-extend-selection</vh></v>
</v>
</v>
<v t="ekr.20180403104643.1"><vh>@menu &amp;Sort Text</vh>
<v t="ekr.20131213135427.22285"><vh>@item sort-&amp;columns</vh></v>
<v t="ekr.20131213135427.22286"><vh>@item sort-&amp;fields</vh></v>
<v t="ekr.20131213135427.22287"><vh>@item sort-&amp;lines</vh></v>
</v>
<v t="ekr.20131213135427.22306"><vh>@menu &amp;Yank/Kill Text</vh>
<v t="ekr.20131213135427.22308"><vh>@item &amp;rectangle-kill</vh></v>
<v t="ekr.20131213135427.22309"><vh>@item r&amp;ectangle-yank</vh></v>
<v t="ekr.20131213135427.22310"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22311"><vh>@item kill-&amp;line</vh></v>
<v t="ekr.20131213135427.22312"><vh>@item kill-re&amp;gion</vh></v>
<v t="ekr.20131213135427.22313"><vh>@item kill-region-s&amp;ave</vh></v>
<v t="ekr.20131213135427.22314"><vh>@item kill-&amp;sentence</vh></v>
<v t="ekr.20131213135427.22315"><vh>@item kill-ws</vh></v>
<v t="ekr.20131213135427.22316"><vh>@item kill-&amp;word</vh></v>
<v t="ekr.20131213135427.22317"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22318"><vh>@item &amp;yank</vh></v>
<v t="ekr.20131213135427.22319"><vh>@item yank-&amp;pop</vh></v>
</v>
</v>
<v t="ekr.20131213135427.22223"><vh>@menu &amp;Format Text</vh>
<v t="ekr.20131213135427.22224"><vh>@item &amp;code-to-rst</vh></v>
<v t="ekr.20131213135427.21896"><vh>@item &amp;insert-body-&amp;time</vh></v>
<v t="ekr.20131213135427.21897"><vh>@item &amp;reformat-paragraph</vh></v>
<v t="ekr.20131213135427.22225"><vh>@item &amp;rst3</vh></v>
</v>
<v t="ekr.20131213135427.22072"><vh>@menu &amp;Select Chapters</vh>
<v t="ekr.20131213135427.22078"><vh>@item chapter-&amp;select</vh></v>
<v t="ekr.20170123145248.1"><vh>@item chapter-select-&amp;main</vh></v>
</v>
</v>
<v t="ekr.20131213135427.21913"><vh>@menu &amp;Search</vh>
<v t="ekr.20131213135427.21914"><vh>@item help-for-find-commands</vh></v>
<v t="ekr.20180403120838.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21910"><vh>@item &amp;goto-global-line</vh></v>
<v t="ekr.20131213135427.21915"><vh>@item start-search</vh></v>
<v t="ekr.20131213135427.21918"><vh>@item find-&amp;next</vh></v>
<v t="ekr.20131213135427.21919"><vh>@item find-&amp;prev</vh></v>
<v t="ekr.20131213135427.21920"><vh>@item &amp;replace</vh></v>
<v t="ekr.20131213135427.21921"><vh>@item replace-&amp;then-find</vh></v>
<v t="ekr.20131213135427.21925"><vh>@item replace-a&amp;ll</vh></v>
<v t="ekr.20131213135427.22203"><vh>@item show-find-&amp;options</vh></v>
<v t="ekr.20180403153949.1"><vh>@item -</vh></v>
<v t="ekr.20180403115620.1"><vh>@menu &amp;Clone-Find Commands</vh>
<v t="ekr.20131213135427.21923"><vh>@item clone-find-all</vh></v>
<v t="ekr.20180403115639.1"><vh>@item clone-find-all-flattened</vh></v>
<v t="ekr.20180403115721.1"><vh>@item clone-find-all-flattened-marked</vh></v>
<v t="ekr.20180403115738.1"><vh>@item clone-find-parents</vh></v>
<v t="ekr.20180403115745.1"><vh>@item clone-find-tag</vh></v>
</v>
<v t="ekr.20180403115320.1"><vh>@menu &amp;Set Search Settings</vh>
<v t="ekr.20131213135427.21934"><vh>@item &amp;set-find-everywhere</vh></v>
<v t="ekr.20131213135427.21935"><vh>@item &amp;set-find-node-only</vh></v>
<v t="ekr.20131213135427.21936"><vh>@item &amp;set-find-suboutline-only</vh></v>
<v t="ekr.20131213135427.21933"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21927"><vh>@item &amp;toggle-find-ignore-case-option</vh></v>
<v t="ekr.20131213135427.21928"><vh>@item &amp;toggle-find-mark-changes-option</vh></v>
<v t="ekr.20131213135427.21929"><vh>@item &amp;toggle-find-mark-finds-option</vh></v>
<v t="ekr.20131213135427.21930"><vh>@item &amp;toggle-find-regex-option</vh></v>
<v t="ekr.20131213135427.21931"><vh>@item &amp;toggle-find-word-option</vh></v>
<v t="ekr.20131213135427.21932"><vh>@item &amp;toggle-find-wrap-around-option</vh></v>
</v>
<v t="ekr.20180403115410.1"><vh>@menu &amp;Find One Character</vh>
<v t="ekr.20131213135427.21938"><vh>@item &amp;find-character</vh></v>
<v t="ekr.20131213135427.21939"><vh>@item &amp;find-character-extend-selection</vh></v>
<v t="ekr.20131213135427.21940"><vh>@item &amp;backward-find-character</vh></v>
<v t="ekr.20131213135427.21941"><vh>@item &amp;backward-find-character-extend-selection</vh></v>
</v>
<v t="ekr.20180403115435.1"><vh>@menu &amp;Find Incrementally</vh>
<v t="ekr.20131213135427.21943"><vh>@item &amp;isearch-forward</vh></v>
<v t="ekr.20131213135427.21944"><vh>@item isea&amp;rch-backward</vh></v>
<v t="ekr.20131213135427.21945"><vh>@item isearch-forward-rege&amp;xp</vh></v>
<v t="ekr.20131213135427.21946"><vh>@item isearch-backward-regex&amp;p</vh></v>
</v>
</v>
<v t="ekr.20131213135427.21951"><vh>@menu Settings</vh>
<v t="ekr.20131213135427.21953"><vh>@item open-leo-settings-leo</vh></v>
<v t="ekr.20131213135427.21954"><vh>@item open-my-leo-settings</vh></v>
<v t="ekr.20180320113441.1"><vh>@item open-theme-file</vh></v>
<v t="ekr.20131213135427.21955"><vh>@item open-local-settings</vh></v>
<v t="ekr.20180405110859.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22050"><vh>@menu &amp;List/Kill Abbreviations</vh>
<v t="ekr.20131213135427.22053"><vh>@item abbrev-&amp;list</vh></v>
<v t="ekr.20131213135427.22059"><vh>@item abbrev-&amp;kill-all</vh></v>
</v>
<v t="ekr.20131213135427.22201"><vh>@menu &amp;Pick Colors/Fonts</vh>
<v t="ekr.20131213135427.22202"><vh>@item show-color-&amp;names</vh></v>
<v t="ekr.20180406013812.1"><vh>@item show-color-&amp;wheel</vh></v>
<v t="ekr.20131213135427.22204"><vh>@item show-&amp;fonts</vh></v>
</v>
<v t="ekr.20180403122225.1"><vh>@menu &amp;Reload Settings</vh>
<v t="ekr.20171229135829.1"><vh>@item reload-all-settings</vh></v>
<v t="ekr.20171229135843.1"><vh>@item reload-settings</vh></v>
<v t="tbrown.20140814090009.57476"><vh>@item reload-style-sheets</vh></v>
</v>
<v t="tbrown.20140814090009.57475"><vh>@menu &amp;Show Settings</vh>
<v t="ekr.20131213135427.21957"><vh>@item show-&amp;bindings</vh></v>
<v t="ekr.20131213135427.21958"><vh>@item show-&amp;commands</vh></v>
<v t="ekr.20131213135427.21960"><vh>@item show-&amp;settings</vh></v>
<v t="ekr.20131213135427.21959"><vh>@item show-&amp;plugins-info</vh></v>
</v>
<v t="ekr.20131215083347.18154"><vh>@menu &amp;Toggle Settings</vh>
<v t="ekr.20131213135427.22289"><vh>@item toggle-a&amp;utocompleter</vh></v>
<v t="ekr.20131213135427.22290"><vh>@item toggle-call&amp;tips</vh></v>
<v t="ekr.20131213135427.22291"><vh>@item toggle-&amp;extend-mode</vh></v>
<v t="ekr.20131213135427.22292"><vh>@item toggle-input-&amp;state</vh></v>
<v t="ekr.20131213135427.22293"><vh>@item toggle-in&amp;visibles</vh></v>
<v t="ekr.20131213135427.22294"><vh>@item toggle-split-&amp;direction</vh></v>
<v t="ekr.20131213135427.22295"><vh>@item toggle-s&amp;parse-move</vh></v>
</v>
</v>
<v t="ekr.20131213135427.21961"><vh>@menu &amp;Outline</vh>
<v t="ekr.20131213135427.21970"><vh>@item &amp;clone-node</vh></v>
<v t="ekr.20131213135427.21966"><vh>@item &amp;delete-node</vh></v>
<v t="ekr.20131213135427.21968"><vh>@item &amp;insert-node</vh></v>
<v t="ekr.20131213135427.21969"><vh>@item insert-child</vh></v>
<v t="ekr.20180405112647.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21962"><vh>@item c&amp;ut-node</vh></v>
<v t="ekr.20131213135427.21963"><vh>@item c&amp;opy-node</vh></v>
<v t="ekr.20131213135427.21964"><vh>@item &amp;paste-node</vh></v>
<v t="ekr.20131213135427.21965"><vh>@item paste-retaining-clones</vh></v>
<v t="ekr.20180405112755.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21977"><vh>@menu &amp;Check/Dump Outline</vh>
<v t="ekr.20131213135427.21978"><vh>@item check-&amp;outline</vh></v>
<v t="ekr.20131213135427.21979"><vh>@item &amp;dump-outline</vh></v>
</v>
<v t="ekr.20131213135427.21983"><vh>@menu &amp;Expand/Contract Nodes</vh>
<v t="ekr.20131213135427.21984"><vh>Accel: a,c,d,e,n,o,p,l,r,t,x</vh></v>
<v t="ekr.20131213135427.21985"><vh>@item &amp;contract-all</vh></v>
<v t="ekr.20131213135427.21986"><vh>@item contract-all-o&amp;ther-nodes</vh></v>
<v t="ekr.20131213135427.21987"><vh>@item contract-&amp;node</vh></v>
<v t="ekr.20131213135427.21988"><vh>@item contract-&amp;parent</vh></v>
<v t="ekr.20131213135427.21989"><vh>@item contract-or-go-&amp;left</vh></v>
<v t="ekr.20131213135427.21990"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21991"><vh>@item expand-p&amp;rev-level</vh></v>
<v t="ekr.20131213135427.21992"><vh>@item expand-n&amp;ext-level</vh></v>
<v t="ekr.20131213135427.21993"><vh>@item e&amp;xpand-and-go-right</vh></v>
<v t="ekr.20131213135427.21994"><vh>@item expan&amp;d-or-go-right</vh></v>
<v t="ekr.20131213135427.21995"><vh>@item -</vh></v>
<v t="ekr.20131213135427.21996"><vh>@item expand-to-level-&amp;1</vh></v>
<v t="ekr.20131213135427.21997"><vh>@item expand-to-level-&amp;2</vh></v>
<v t="ekr.20131213135427.21998"><vh>@item expand-to-level-&amp;3</vh></v>
<v t="ekr.20131213135427.21999"><vh>@item expand-to-level-&amp;4</vh></v>
<v t="ekr.20131213135427.22000"><vh>@item expand-to-level-&amp;5</vh></v>
<v t="ekr.20131213135427.22001"><vh>@item expand-to-level-&amp;6</vh></v>
<v t="ekr.20131213135427.22002"><vh>@item expand-to-level-&amp;7</vh></v>
<v t="ekr.20131213135427.22003"><vh>@item expand-to-level-&amp;8</vh></v>
<v t="ekr.20131213135427.22004"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22005"><vh>@item expand-&amp;all</vh></v>
<v t="ekr.20131213135427.22006"><vh>@item expand-n&amp;ode</vh></v>
</v>
<v t="ekr.20131213135427.22021"><vh>@menu &amp;Go To Node</vh>
<v t="ekr.20131213135427.22022"><vh>@item find-next-clone</vh></v>
<v t="ekr.20131213135427.22023"><vh>@item goto-first-node</vh></v>
<v t="ekr.20131213135427.22024"><vh>@item goto-first-visible-node</vh></v>
<v t="ekr.20131213135427.22025"><vh>@item goto-first-sibling</vh></v>
<v t="ekr.20131213135427.22026"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22027"><vh>@item goto-next-changed</vh></v>
<v t="ekr.20131213135427.22028"><vh>@item goto-next-clone</vh></v>
<v t="ekr.20131213135427.22029"><vh>@item goto-next-marked</vh></v>
<v t="ekr.20131213135427.22030"><vh>@item goto-next-node</vh></v>
<v t="ekr.20131213135427.22031"><vh>@item goto-next-sibling</vh></v>
<v t="ekr.20131213135427.22032"><vh>@item goto-next-visible</vh></v>
<v t="ekr.20131213135427.22033"><vh>@item go-forward</vh></v>
<v t="ekr.20131213135427.22034"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22035"><vh>@item goto-parent</vh></v>
<v t="ekr.20131213135427.22036"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22037"><vh>@item goto-prev-node</vh></v>
<v t="ekr.20131213135427.22038"><vh>@item goto-prev-sibling</vh></v>
<v t="ekr.20131213135427.22039"><vh>@item goto-prev-visible</vh></v>
<v t="ekr.20131213135427.22040"><vh>@item go-back</vh></v>
<v t="ekr.20131213135427.22041"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22042"><vh>@item goto-last-node</vh></v>
<v t="ekr.20131213135427.22043"><vh>@item goto-last-sibling</vh></v>
<v t="ekr.20131213135427.22044"><vh>@item goto-last-visible-node</vh></v>
</v>
<v t="ekr.20131213135427.21973"><vh>@menu &amp;Hoist/Dehoist nodes</vh>
<v t="ekr.20131213135427.21974"><vh>@item &amp;hoist</vh></v>
<v t="ekr.20131213135427.21975"><vh>@item de-hoist</vh></v>
</v>
<v t="ekr.20131213135427.22177"><vh>@menu &amp;Insert/Delete Icons</vh>
<v t="ekr.20131213135427.22178"><vh>@item delete-&amp;first-icon</vh></v>
<v t="ekr.20131213135427.22179"><vh>@item delete-&amp;last-icon</vh></v>
<v t="ekr.20131213135427.22180"><vh>@item delete-&amp;node-icons</vh></v>
<v t="ekr.20131213135427.22182"><vh>@item &amp;insert-icon</vh></v>
</v>
<v t="ekr.20131213135427.22015"><vh>@menu &amp;Mark Nodes</vh>
<v t="ekr.20131213135427.22016"><vh>@item clone-marked-nodes</vh></v>
<v t="ekr.20131213135427.22017"><vh>@item &amp;mark</vh></v>
<v t="ekr.20131213135427.22018"><vh>@item mark-&amp;subheads</vh></v>
<v t="ekr.20131213135427.22019"><vh>@item mark-changed-&amp;items</vh></v>
<v t="ekr.20131213135427.22020"><vh>@item &amp;unmark-all</vh></v>
</v>
<v t="ekr.20131213135427.22007"><vh>@menu &amp;Move Nodes</vh>
<v t="ekr.20131213135427.22008"><vh>@item move-outline-down</vh></v>
<v t="ekr.20131213135427.22009"><vh>@item move-outline-left</vh></v>
<v t="ekr.20131213135427.22010"><vh>@item move-outline-right</vh></v>
<v t="ekr.20131213135427.22011"><vh>@item move-outline-up</vh></v>
<v t="ekr.20131213135427.22012"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22013"><vh>@item &amp;promote</vh></v>
<v t="ekr.20131213135427.22014"><vh>@item &amp;demote</vh></v>
</v>
<v t="ekr.20180403123734.1"><vh>@menu &amp;Sort Nodes</vh>
<v t="ekr.20131213135427.21971"><vh>@item sort-childre&amp;n</vh></v>
<v t="ekr.20131213135427.21972"><vh>@item &amp;sort-siblings</vh></v>
</v>
</v>
<v t="ekr.20131213135427.22045"><vh>@menu &amp;Plugins</vh>
<v t="ekr.20131213135427.22046"><vh>@item open-leo-plugins-leo</vh></v>
<v t="ekr.20131213135427.22047"><vh>@item show-plugins-info</vh></v>
<v t="ekr.20131213135427.22048"><vh>@item -</vh></v>
</v>
<v t="ekr.20180403122045.1"><vh>@menu Run</vh>
<v t="ekr.20131213135427.22200"><vh>@item &amp;help-for-minibuffer</vh></v>
<v t="ekr.20180403120726.1"><vh>@item &amp;execute-script</vh></v>
<v t="ekr.20131213135427.22195"><vh>@item &amp;full-command</vh></v>
<v t="ekr.20131213135427.22196"><vh>@item &amp;keyboard-quit</vh></v>
<v t="ekr.20131213135427.22197"><vh>@item &amp;repeat-complex-command</vh></v>
<v t="ekr.20131213135427.22198"><vh>@item &amp;view-lossage</vh></v>
<v t="ekr.20180405112939.1"><vh>@item -</vh></v>
<v t="ekr.20180403105526.1"><vh>@item &amp;eval</vh></v>
<v t="ekr.20180403105636.1"><vh>@item &amp;eval-block</vh></v>
<v t="ekr.20180403105541.1"><vh>@item &amp;eval-last</vh></v>
<v t="ekr.20180403105609.1"><vh>@item &amp;eval-last-pretty</vh></v>
<v t="ekr.20180403105722.1"><vh>@item &amp;eval-replace</vh></v>
<v t="ekr.20180405112923.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22131"><vh>@menu &amp;Control Garbage Collection</vh>
<v t="ekr.20131213135427.22132"><vh>@item gc-&amp;collect-garbage</vh></v>
<v t="ekr.20131213135427.22133"><vh>@item gc-dump-&amp;all-objects</vh></v>
<v t="ekr.20131213135427.22134"><vh>@item gc-dump-&amp;new-objects</vh></v>
<v t="ekr.20131213135427.22135"><vh>@item gc-dump-objects-&amp;verbose</vh></v>
<v t="ekr.20131213135427.22136"><vh>@item gc-show-&amp;summary</vh></v>
</v>
<v t="ekr.20131213135427.22194"><vh>@menu &amp;Execute Shell Commands</vh>
<v t="ekr.20131213135427.22130"><vh>@item &amp;open-python-window</vh></v>
<v t="ekr.20131213135427.22258"><vh>@item &amp;shell-command</vh></v>
<v t="ekr.20131213135427.22259"><vh>@item &amp;shell-command-on-region</vh></v>
</v>
<v t="ekr.20131213135427.22127"><vh>@menu &amp;Invoke Debuggers</vh>
<v t="ekr.20131213135427.22128"><vh>@item debug</vh></v>
<v t="ekr.20131213135427.22129"><vh>@item pdb</vh></v>
</v>
<v t="ekr.20131213135427.22226"><vh>@menu &amp;Run Unit Tests</vh>
<v t="ekr.20131213135427.22229"><vh>@item run-&amp;all-unit-tests-locally</vh></v>
<v t="ekr.20131213135427.22230"><vh>@item run-&amp;marked-unit-tests-locally</vh></v>
<v t="ekr.20131213135427.22231"><vh>@item run-&amp;selected-unit-tests-locally</vh></v>
<v t="ekr.20131213135427.22232"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22233"><vh>@item run-&amp;all-unit-tests-externally</vh></v>
<v t="ekr.20131213135427.22234"><vh>@item run-&amp;marked-unit-tests-externally</vh></v>
<v t="ekr.20131213135427.22235"><vh>@item run-&amp;selected-unit-tests-externally</vh></v>
</v>
</v>
<v t="ekr.20131213135427.22320"><vh>@menu &amp;Window</vh>
<v t="ekr.20131213135427.22341"><vh>@item &amp;cascade-windows</vh></v>
<v t="ekr.20131213135427.22342"><vh>@item &amp;minimize-all</vh></v>
<v t="ekr.20131213135427.22340"><vh>@item &amp;resize-to-screen</vh></v>
<v t="ekr.20180403154533.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22060"><vh>@menu &amp;Add/Delete Body Editors</vh>
<v t="ekr.20131213135427.22061"><vh>@item &amp;add-editor</vh></v>
<v t="ekr.20131213135427.22062"><vh>@item &amp;cycle-editor-focus</vh></v>
<v t="ekr.20131213135427.22063"><vh>@item &amp;delete-editor</vh></v>
</v>
<v t="ekr.20170509104949.1"><vh>@menu &amp;Change Window Layout</vh>
<v t="tbrown.20160130095933.1"><vh>@item free-layout-context-menu</vh></v>
<v t="tbrown.20160130095933.2"><vh>@item free-layout-load</vh></v>
<v t="tbrown.20160130095933.3"><vh>@item free-layout-restore</vh></v>
<v t="tbrown.20160130095933.4"><vh>@item free-layout-zoom</vh></v>
<v t="ekr.20180511075115.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22323"><vh>@item toggle-&amp;split-direction</vh></v>
</v>
<v t="ekr.20170509103101.1"><vh>@menu &amp;Expand/Contract Panes</vh>
<v t="ekr.20131213135427.22321"><vh>@item &amp;equal-sized-panes</vh></v>
<v t="ekr.20180403110757.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22325"><vh>@item contract-&amp;body-pane</vh></v>
<v t="ekr.20131213135427.22326"><vh>@item contract-&amp;log-pane</vh></v>
<v t="ekr.20131213135427.22327"><vh>@item contract-&amp;outline-pane</vh></v>
<v t="ekr.20131213135427.22328"><vh>@item contract-&amp;pane</vh></v>
<v t="ekr.20131213135427.22329"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22330"><vh>@item expand-bo&amp;dy-pane</vh></v>
<v t="ekr.20131213135427.22331"><vh>@item expand-lo&amp;g-pane</vh></v>
<v t="ekr.20131213135427.22332"><vh>@item expand-o&amp;utline-pane</vh></v>
<v t="ekr.20131213135427.22333"><vh>@item expand-pa&amp;ne</vh></v>
<v t="ekr.20131213135427.22334"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22335"><vh>@item &amp;fully-expand-body-pane</vh></v>
<v t="ekr.20131213135427.22336"><vh>@item full&amp;y-expand-log-pane</vh></v>
<v t="ekr.20131213135427.22337"><vh>@item fully-e&amp;xpand-outline-pane</vh></v>
<v t="ekr.20131213135427.22338"><vh>@item fully-exp&amp;and-pane</vh></v>
</v>
<v t="ekr.20131213135427.22236"><vh>@menu &amp;Scroll Text Areas</vh>
<v t="ekr.20131213135427.22237"><vh>@item scroll-outline-down-&amp;line</vh></v>
<v t="ekr.20131213135427.22238"><vh>@item scroll-outline-down-&amp;page</vh></v>
<v t="ekr.20131213135427.22239"><vh>@item scroll-outline-le&amp;ft</vh></v>
<v t="ekr.20131213135427.22240"><vh>@item scroll-outline-&amp;right</vh></v>
<v t="ekr.20131213135427.22241"><vh>@item s&amp;croll-outline-up-line</vh></v>
<v t="ekr.20131213135427.22242"><vh>@item scr&amp;oll-outline-up-page</vh></v>
<v t="ekr.20131213135427.22243"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22244"><vh>@item scroll-down-half-page</vh></v>
<v t="ekr.20131213135427.22245"><vh>@item scroll-down-line</vh></v>
<v t="ekr.20131213135427.22246"><vh>@item scroll-&amp;down-page</vh></v>
<v t="ekr.20131213135427.22247"><vh>@item scroll-up-half-page</vh></v>
<v t="ekr.20131213135427.22248"><vh>@item scroll-up-line</vh></v>
<v t="ekr.20131213135427.22249"><vh>@item scroll-&amp;up-page</vh></v>
</v>
<v t="ekr.20170509103221.1"><vh>@menu &amp;Set Focus</vh>
<v t="ekr.20131213135427.22322"><vh>@item &amp;toggle-active-pane</vh></v>
<v t="ekr.20170509104817.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22157"><vh>@item focus-to-&amp;body</vh></v>
<v t="ekr.20131213135427.22158"><vh>@item focus-to-&amp;log</vh></v>
<v t="ekr.20141112072219.1"><vh>@item focus-to-&amp;find</vh></v>
<v t="ekr.20131213135427.22159"><vh>@item focus-to-&amp;minibuffer</vh></v>
<v t="ekr.20141112072219.2"><vh>@item focus-to-&amp;spell-tab</vh></v>
<v t="ekr.20131213135427.22160"><vh>@item focus-to-&amp;tree</vh></v>
</v>
<v t="ekr.20170509104039.1"><vh>@menu &amp;Show Or Hide Panes</vh>
<v t="ekr.20170509103811.1"><vh>@item gui-&amp;all-hide</vh></v>
<v t="ekr.20170509104039.2"><vh>@item gui-&amp;all-show</vh></v>
<v t="ekr.20170509104140.2"><vh>@item gui-&amp;all-toggle</vh></v>
<v t="ekr.20180406014050.1"><vh>@item-</vh></v>
<v t="ekr.20170509103833.1"><vh>@item gui-&amp;iconbar-hide</vh></v>
<v t="ekr.20170509104039.3"><vh>@item gui-&amp;iconbar-show</vh></v>
<v t="ekr.20170509104140.3"><vh>@item gui-&amp;iconbar-toggle</vh></v>
<v t="ekr.20180406014102.1"><vh>@item -</vh></v>
<v t="ekr.20170509103834.1"><vh>@item gui-&amp;menu-hide</vh></v>
<v t="ekr.20170509104039.4"><vh>@item gui-&amp;menu-show</vh></v>
<v t="ekr.20170509104140.4"><vh>@item gui-&amp;menu-toggle</vh></v>
<v t="ekr.20180406014111.1"><vh>@item -</vh></v>
<v t="ekr.20170509103823.1"><vh>@item gui-&amp;minibuffer-hide</vh></v>
<v t="ekr.20170509104039.5"><vh>@item gui-&amp;minibuffer-show</vh></v>
<v t="ekr.20170509104140.5"><vh>@item gui-&amp;minibuffer-toggle</vh></v>
<v t="ekr.20180406014118.1"><vh>@item -</vh></v>
<v t="ekr.20170509103931.1"><vh>@item gui-&amp;statusbar-hide</vh></v>
<v t="ekr.20170509104039.6"><vh>@item gui-&amp;statusbar-show</vh></v>
<v t="ekr.20170509104140.6"><vh>@item gui-&amp;statusbar-toggle</vh></v>
<v t="ekr.20180406014127.1"><vh>@item -</vh></v>
<v t="ekr.20170509103944.1"><vh>@item gui-&amp;tabbar-hide</vh></v>
<v t="ekr.20170509104039.7"><vh>@item gui-&amp;tabbar-show</vh></v>
<v t="ekr.20170509104140.7"><vh>@item gui-&amp;tabbar-toggle</vh></v>
</v>
</v>
<v t="ekr.20131213135427.22343"><vh>@menu &amp;Help</vh>
<v t="ekr.20131213135427.22344"><vh>@item &amp;about-leo</vh></v>
<v t="ekr.20180403154703.1"><vh>@item -</vh></v>
<v t="ekr.20131213135427.22356"><vh>@menu &amp;Open Help topics</vh>
<v t="ekr.20131213135427.22357"><vh>@item help</vh></v>
<v t="ekr.20180403100653.1"><vh>@item help-for-&amp;abbreviations</vh></v>
<v t="ekr.20131213135427.22358"><vh>@item help-for-&amp;autocompletion</vh></v>
<v t="ekr.20131213135427.22359"><vh>@item help-for-&amp;bindings</vh></v>
<v t="ekr.20131213135427.22360"><vh>@item help-for-&amp;command</vh></v>
<v t="ekr.20131215083347.18147"><vh>@item help-for-&amp;creating-external-files</vh></v>
<v t="ekr.20180403100719.1"><vh>@item help-for-&amp;drag-and-drop</vh></v>
<v t="ekr.20131213135427.22361"><vh>@item help-for-&amp;debugging-commands</vh></v>
<v t="ekr.20180403100800.1"><vh>@item help-for-&amp;dynamic-abbreviations</vh></v>
<v t="ekr.20131213135427.22362"><vh>@item help-for-&amp;find-commands</vh></v>
<v t="ekr.20180403100839.1"><vh>@item help-for-&amp;keystroke</vh></v>
<v t="ekr.20131213135427.22363"><vh>@item help-for-&amp;minibuffer</vh></v>
<v t="ekr.20180403100900.1"><vh>@item help-for-&amp;python</vh></v>
<v t="ekr.20131215083347.18148"><vh>@item help-for-&amp;scripting</vh></v>
<v t="ekr.20180403100919.1"><vh>@item help-for-&amp;regular-expressions</vh></v>
<v t="ekr.20180403100935.1"><vh>@item help-for-&amp;settings</vh></v>
</v>
<v t="ekr.20180403124541.1"><vh>@menu &amp;Open Tutorial Outlines</vh>
<v t="ekr.20131213135427.22353"><vh>@item &amp;open-cheat-sheet-leo</vh></v>
<v t="ekr.20131213135427.22354"><vh>@item &amp;open-leo-docs-leo</vh></v>
<v t="ekr.20131213135427.22355"><vh>@item &amp;open-quickstart-leo</vh></v>
</v>
<v t="ekr.20131213135427.22345"><vh>@menu &amp;Open Web Pages</vh>
<v t="ekr.20131213135427.22346"><vh>@item &amp;open-online-home</vh></v>
<v t="ekr.20131213135427.22347"><vh>@item &amp;open-online-toc</vh></v>
<v t="ekr.20131213135427.22348"><vh>@item &amp;open-users-guide</vh></v>
<v t="ekr.20131213135427.22349"><vh>@item &amp;open-online-tutorials</vh></v>
<v t="ekr.20131213135427.22350"><vh>@item &amp;open-online-videos</vh></v>
</v>
</v>
</v>
<v t="ekr.20080515053412.3"><vh>@popup_menus</vh>
<v t="ekr.20080515053412.4"><vh>Main Context Menus</vh>
<v t="ekr.20080515053412.5"><vh>@popup body</vh>
<v t="ekr.20080515053412.6"><vh>@item &amp;</vh></v>
<v t="ekr.20080515053412.7"><vh>@item -</vh></v>
<v t="ekr.20080515053412.8"><vh>@menu Block Operations</vh>
<v t="ekr.20080515053412.9"><vh>@item indent-region</vh></v>
<v t="ekr.20080515053412.10"><vh>@item dedent-region</vh></v>
<v t="ekr.20080515053412.11"><vh>@item -</vh></v>
<v t="ekr.20080515053412.12"><vh>@item add-comments</vh></v>
<v t="ekr.20080515053412.13"><vh>@item delete-comments</vh></v>
</v>
<v t="ekr.20080515053412.14"><vh>@item &amp;</vh></v>
<v t="ekr.20080515053412.15"><vh>@item -</vh></v>
<v t="ekr.20080515053412.16"><vh>@item match-brackets</vh></v>
<v t="ekr.20080515053412.17"><vh>@item execute-script</vh></v>
<v t="ekr.20080515053412.18"><vh>@item *</vh></v>
</v>
<v t="ekr.20080515053412.19"><vh>@popup log</vh>
<v t="ekr.20080515053412.20"><vh>@item &amp;</vh></v>
</v>
<v t="ekr.20080515053412.21"><vh>@popup find-text</vh>
<v t="ekr.20080515053412.22"><vh>@item &amp;</vh></v>
</v>
<v t="ekr.20080515053412.23"><vh>@popup change-text</vh>
<v t="ekr.20080515053412.24"><vh>@item &amp;</vh></v>
</v>
<v t="ekr.20080515053412.25"><vh>@popup canvas</vh>
<v t="ekr.20080515053412.26"><vh>@item &amp;</vh></v>
<v t="ekr.20080515053412.27"><vh>@item -</vh></v>
<v t="ekr.20080515053412.28"><vh>@item create-chapter</vh></v>
<v t="ekr.20080515053412.29"><vh>@item remove-chapter</vh></v>
</v>
<v t="ekr.20080515053412.30"><vh>@popup headline</vh></v>
<v t="ekr.20080515053412.31"><vh>@popup iconbox</vh></v>
<v t="ekr.20080515053412.32"><vh>@popup plusbox</vh></v>
</v>
<v t="ekr.20080515053412.33"><vh>Fragments</vh>
<v t="ekr.20080515053412.34"><vh>@popup edit-menu</vh>
<v t="ekr.20080515053412.35"><vh>@item rclick-cut-text</vh></v>
<v t="ekr.20080515053412.36"><vh>@item rclick-copy-text</vh></v>
<v t="ekr.20080515053412.37"><vh>@item rclick-paste-text</vh></v>
<v t="ekr.20080515053412.38"><vh>@item -</vh></v>
<v t="ekr.20080515053412.39"><vh>@item rclick-select-all</vh></v>
</v>
<v t="ekr.20080515053412.40"><vh>@popup recent-files-menu</vh>
<v t="ekr.20080515053412.41"><vh>@menu Recent Files</vh>
<v t="ekr.20080515053412.42"><vh>@item *</vh></v>
</v>
</v>
<v t="ekr.20080515053412.43"><vh>@popup to-chapter-fragment</vh>
<v t="ekr.20080515053412.44"><vh>@menu Clone to Chapter</vh>
<v t="ekr.20080515053412.45"><vh>@item *</vh></v>
</v>
<v t="ekr.20080515053412.46"><vh>@menu Copy to Chapter</vh>
<v t="ekr.20080515053412.47"><vh>@item *</vh></v>
</v>
<v t="ekr.20080515053412.48"><vh>@menu Move to Chapter</vh>
<v t="ekr.20080515053412.49"><vh>@item *</vh></v>
</v>
<v t="ekr.20080515053412.50"><vh>@menu Select Chapter</vh>
<v t="ekr.20080515053412.51"><vh>@item *</vh></v>
</v>
</v>
</v>
</v>
<v t="ville.20091008201813.3909"><vh>Qt context menu</vh>
<v t="ville.20091008201813.3911"><vh>@data contextmenu_commands</vh></v>
</v>
<v t="ekr.20070411101857"><vh>Open With menu</vh>
<v t="ekr.20171206102715.1"><vh>@ifplatform linux, linux2</vh>
<v t="ekr.20171206102715.2"><vh>@openwith Scite = Alt+Shift+Ctrl+S</vh></v>
</v>
<v t="ekr.20171206102759.1"><vh>@ifplatform win32</vh>
<v t="ekr.20171206102759.2"><vh>@openwith Idle = Alt+Shift+Ctrl+I</vh></v>
<v t="ekr.20171206102759.3"><vh>@openwith Open-Office = Alt+Shift+Ctrl+O</vh></v>
<v t="ekr.20171206102759.4"><vh>@openwith Scite = Alt+Shift+Ctrl+S</vh></v>
<v t="ekr.20070411101857.2"><vh>@openwith Word = Alt+Shift+Ctrl+W </vh></v>
<v t="ekr.20171206102759.6"><vh>@@openwith Wordpad = Alt+Shift+Ctrl+T</vh></v>
</v>
<v t="TL.20080702085131.2"><vh>@bool open_with_save_on_update = True</vh></v>
<v t="TL.20080702085131.3"><vh>@bool open_with_goto_node_on_update = True</vh></v>
<v t="TL.20080702085131.4"><vh>@bool open_with_clean_filenames = False</vh></v>
<v t="TL.20080702085131.5"><vh>@bool open_with_uses_derived_file_extensions = False</vh></v>
</v>
<v t="tbrown.20150821171510.1"><vh>@outline-data settings-finder-menu</vh>
<v t="tbrown.20150821171510.2"><vh>Colors</vh>
<v t="tbrown.20150821171510.3"><vh>Body pane</vh>
<v t="tbrown.20150821171510.4"><vh>Background</vh></v>
<v t="tbrown.20150821171510.5"><vh>Foreground</vh></v>
<v t="tbrown.20150821171510.6"><vh>Selected foreground</vh></v>
<v t="tbrown.20150821171510.7"><vh>Selected background</vh></v>
</v>
<v t="tbrown.20150821171510.9"><vh>Border colors</vh>
<v t="tbrown.20150821171510.10"><vh>Focused border</vh></v>
<v t="tbrown.20150821171510.11"><vh>Not focused border</vh></v>
</v>
<v t="tbrown.20150821171510.12"><vh>Button background colors</vh>
<v t="tbrown.20150821171510.13"><vh>Run script</vh></v>
<v t="tbrown.20150821171510.14"><vh>Debug script</vh></v>
<v t="tbrown.20150821171510.15"><vh>Script button</vh></v>
<v t="tbrown.20150821171510.16"><vh>Script</vh></v>
<v t="tbrown.20150821171510.17"><vh>Generic</vh></v>
<v t="tbrown.20150821171510.18"><vh>Quick move</vh></v>
<v t="tbrown.20150821171510.19"><vh>Interact</vh></v>
<v t="tbrown.20150821171510.20"><vh>At button</vh></v>
</v>
<v t="tbrown.20150821171510.21"><vh>Find tab colors</vh>
<v t="tbrown.20150821171510.22"><vh>Find tab background</vh></v>
</v>
<v t="tbrown.20150821171510.23"><vh>Gutter colors</vh>
<v t="tbrown.20150821171510.24"><vh>Gutter background</vh></v>
<v t="tbrown.20150821171510.25"><vh>Gutter foreground</vh></v>
</v>
<v t="tbrown.20150821171510.26"><vh>Log pane colors</vh>
<v t="tbrown.20150821171510.27"><vh>Log foreground</vh></v>
<v t="tbrown.20150821171510.28"><vh>Log background</vh></v>
</v>
<v t="tbrown.20150821171510.29"><vh>Minibuffer colors</vh>
<v t="tbrown.20150821171510.30"><vh>Foreground</vh></v>
<v t="tbrown.20150821171510.31"><vh>Background</vh></v>
<v t="tbrown.20150821171510.32"><vh>Select foreground</vh></v>
<v t="tbrown.20150821171510.33"><vh>Select background</vh></v>
</v>
<v t="tbrown.20150821171510.34"><vh>Outline colors</vh>
<v t="tbrown.20150821171510.35"><vh>Basic outline colors</vh>
<v t="tbrown.20150821171510.36"><vh>Tree foreground</vh></v>
<v t="tbrown.20150821171510.37"><vh>Tree background</vh></v>
</v>
<v t="tbrown.20150821171510.38"><vh>Colors for headlines that *are* being edited</vh>
<v t="tbrown.20150821171510.39"><vh>Head foreground</vh></v>
<v t="tbrown.20150821171510.40"><vh>Head background</vh></v>
<v t="tbrown.20150821171510.41"><vh>Head select foreground</vh></v>
<v t="tbrown.20150821171510.42"><vh>Head select background</vh></v>
</v>
<v t="tbrown.20150821171510.43"><vh>Colors for headlines that are *not* being edited</vh>
<v t="tbrown.20150821171510.44"><vh>Edit label border</vh></v>
<v t="tbrown.20150821171510.45"><vh>Edit label margin</vh></v>
<v t="tbrown.20150821171510.46"><vh>Edit label background</vh></v>
<v t="tbrown.20150821171510.47"><vh>Edit label foreground</vh></v>
</v>
</v>
<v t="tbrown.20150821171510.48"><vh>Plugin colors (deprecated)</vh>
<v t="tbrown.20150821171510.49"><vh>Text foreground</vh></v>
<v t="tbrown.20150821171510.50"><vh>Text foreground body</vh></v>
<v t="tbrown.20150821171510.51"><vh>Text foreground tree</vh></v>
<v t="tbrown.20150821171510.52"><vh>Text foreground log</vh></v>
</v>
<v t="tbrown.20150821171510.53"><vh>Render pane colors</vh>
<v t="tbrown.20150821171510.54"><vh>Render background</vh></v>
<v t="tbrown.20150821171510.55"><vh>Render foreground</vh></v>
</v>
<v t="tbrown.20150821171510.56"><vh>Scroll area colors</vh>
<v t="tbrown.20150821171510.57"><vh>Scroll area background</vh></v>
</v>
<v t="tbrown.20150821171510.58"><vh>Splitter colors</vh>
<v t="tbrown.20150821171510.59"><vh>Splitter background</vh></v>
<v t="tbrown.20150821171510.60"><vh>Splitter handle background</vh></v>
<v t="tbrown.20150821171510.61"><vh>Splitter border foreground</vh></v>
<v t="tbrown.20150821171510.62"><vh>Splitter border style</vh></v>
</v>
<v t="tbrown.20150821171510.63"><vh>Status area colors</vh>
<v t="tbrown.20150821171510.64"><vh>Status background</vh></v>
<v t="tbrown.20150821171510.65"><vh>Status foreground</vh></v>
<v t="tbrown.20150821171510.66"><vh>Status border style</vh></v>
<v t="tbrown.20150821171510.67"><vh>Status border color</vh></v>
</v>
<v t="tbrown.20150821171510.68"><vh>Status area colors for searches</vh>
<v t="tbrown.20150821171510.69"><vh>Found background</vh></v>
<v t="tbrown.20150821171510.70"><vh>Found foreground</vh></v>
<v t="tbrown.20150821171510.71"><vh>Not found background</vh></v>
<v t="tbrown.20150821171510.72"><vh>Not found foreground</vh></v>
</v>
<v t="tbrown.20150821171510.73"><vh>Widget colors (simple widgets)</vh>
<v t="tbrown.20150821171510.74"><vh>Frame background</vh></v>
<v t="tbrown.20150821171510.75"><vh>Stacked widget border color</vh></v>
<v t="tbrown.20150821171510.76"><vh>Stacked widget background</vh></v>
<v t="tbrown.20150821171510.77"><vh>Tabbed widget background</vh></v>
</v>
</v>
<v t="tbrown.20150821171510.78"><vh>Fonts</vh>
<v t="tbrown.20150821171510.79"><vh>Basic Fonts (change these first)</vh>
<v t="tbrown.20150821171510.80"><vh>Family</vh></v>
<v t="tbrown.20150821171510.81"><vh>Size</vh></v>
<v t="tbrown.20150821171510.82"><vh>Medium size</vh></v>
<v t="tbrown.20150821171510.83"><vh>Small size</vh></v>
<v t="tbrown.20150821171510.84"><vh>Style</vh></v>
<v t="tbrown.20150821171510.85"><vh>Weight</vh></v>
</v>
<v t="tbrown.20150821171510.86"><vh>Body Fonts</vh>
<v t="tbrown.20150821171510.87"><vh>Family</vh></v>
<v t="tbrown.20150821171510.88"><vh>Size</vh></v>
<v t="tbrown.20150821171510.89"><vh>Style</vh></v>
<v t="tbrown.20150821171510.90"><vh>Weight</vh></v>
</v>
<v t="tbrown.20150821171510.92"><vh>Dialog fonts</vh>
<v t="tbrown.20150821171510.93"><vh>Family</vh></v>
<v t="tbrown.20150821171510.94"><vh>Size</vh></v>
<v t="tbrown.20150821171510.95"><vh>Weight</vh></v>
<v t="tbrown.20150821171510.96"><vh>Style</vh></v>
</v>
<v t="tbrown.20150821171510.97"><vh>Find Panel Fonts</vh>
<v t="tbrown.20150821171510.98"><vh>Checkbox family</vh></v>
<v t="tbrown.20150821171510.99"><vh>Checkbox size</vh></v>
<v t="tbrown.20150821171510.100"><vh>Family</vh></v>
<v t="tbrown.20150821171510.101"><vh>Size</vh></v>
<v t="tbrown.20150821171510.102"><vh>Style</vh></v>
<v t="tbrown.20150821171510.103"><vh>Weight</vh></v>
<v t="tbrown.20150821171510.104"><vh>Pattern font family</vh></v>
</v>
<v t="tbrown.20150821171510.105"><vh>Gutter Fonts</vh>
<v t="tbrown.20150821171510.106"><vh>Family</vh></v>
<v t="tbrown.20150821171510.107"><vh>Size</vh></v>
<v t="tbrown.20150821171510.108"><vh>Style</vh></v>
<v t="tbrown.20150821171510.109"><vh>Weight</vh></v>
</v>
<v t="tbrown.20150821171510.110"><vh>Log pane fonts</vh>
<v t="tbrown.20150821171510.111"><vh>Selection foreground</vh></v>
<v t="tbrown.20150821171510.112"><vh>Selection background</vh></v>
<v t="tbrown.20150821171510.113"><vh>Family</vh></v>
<v t="tbrown.20150821171510.114"><vh>Size</vh></v>
<v t="tbrown.20150821171510.115"><vh>Weight</vh></v>
<v t="tbrown.20150821171510.116"><vh>Style</vh></v>
</v>
<v t="tbrown.20150821171510.117"><vh>Minibuffer fonts</vh>
<v t="tbrown.20150821171510.118"><vh>Family</vh></v>
<v t="tbrown.20150821171510.119"><vh>Size</vh></v>
<v t="tbrown.20150821171510.120"><vh>Weight</vh></v>
<v t="tbrown.20150821171510.121"><vh>Style</vh></v>
</v>
<v t="tbrown.20150821171510.122"><vh>Outline pane fonts</vh>
<v t="tbrown.20150821171510.123"><vh>Basic outline fonts</vh>
<v t="tbrown.20150821171510.124"><vh>Family</vh></v>
<v t="tbrown.20150821171510.125"><vh>Size</vh></v>
<v t="tbrown.20150821171510.126"><vh>Weight</vh></v>
<v t="tbrown.20150821171510.127"><vh>Style</vh></v>
</v>
<v t="tbrown.20150821171510.128"><vh>Fonts for headlines that *are* being edited</vh>
<v t="tbrown.20150821171510.129"><vh>Family</vh></v>
<v t="tbrown.20150821171510.130"><vh>Size</vh></v>
<v t="tbrown.20150821171510.131"><vh>Weight</vh></v>
<v t="tbrown.20150821171510.132"><vh>Style</vh></v>
</v>
<v t="tbrown.20150821171510.133"><vh>Fonts for headlines that are *not* being edited</vh>
<v t="tbrown.20150821171510.134"><vh>Family</vh></v>
<v t="tbrown.20150821171510.135"><vh>Size</vh></v>
<v t="tbrown.20150821171510.136"><vh>Weight</vh></v>
<v t="tbrown.20150821171510.137"><vh>Style</vh></v>
</v>
</v>
<v t="tbrown.20150821171510.138"><vh>Status area fonts</vh>
<v t="tbrown.20150821171510.139"><vh>Family</vh></v>
<v t="tbrown.20150821171510.140"><vh>Size</vh></v>
<v t="tbrown.20150821171510.141"><vh>Weight</vh></v>
<v t="tbrown.20150821171510.142"><vh>Style</vh></v>
</v>
</v>
<v t="tbrown.20150821171510.143"><vh>Margins And borders</vh>
<v t="tbrown.20150821171510.144"><vh>Dialogs styles</vh>
<v t="tbrown.20150821171510.145"><vh>Border</vh></v>
<v t="tbrown.20150821171510.146"><vh>Margin</vh></v>
</v>
<v t="tbrown.20150821171510.147"><vh>Focus border styles</vh>
<v t="tbrown.20150821171510.148"><vh>Style</vh></v>
<v t="tbrown.20150821171510.149"><vh>Width</vh></v>
</v>
<v t="tbrown.20150821171510.150"><vh>Gutter</vh>
<v t="tbrown.20150821171510.151"><vh>Use gutter</vh></v>
<v t="tbrown.20150821171510.152"><vh>Gutter w adjust</vh></v>
<v t="tbrown.20150821171510.153"><vh>Gutter y adjust</vh></v>
</v>
<v t="tbrown.20150821171510.154"><vh>Minibuffer styles</vh>
<v t="tbrown.20150821171510.155"><vh>Border</vh></v>
<v t="tbrown.20150821171510.156"><vh>Margin</vh></v>
</v>
<v t="tbrown.20150821171510.157"><vh>Stacked widgets styles</vh>
<v t="tbrown.20150821171510.158"><vh>Padding</vh></v>
</v>
<v t="tbrown.20150821171510.159"><vh>Status area styles</vh>
<v t="tbrown.20150821171510.160"><vh>Border width</vh></v>
</v>
<v t="tbrown.20150821171510.161"><vh>Vim mode borders/colors</vh>
<v t="tbrown.20150821171510.162"><vh>Normal border</vh></v>
<v t="tbrown.20150821171510.163"><vh>Insert border</vh></v>
<v t="tbrown.20150821171510.164"><vh>Visual border</vh></v>
</v>
</v>
<v t="tbrown.20150821171510.165"><vh>Outline indicators</vh>
<v t="tbrown.20150821171510.166"><vh>Tree image closed</vh></v>
<v t="tbrown.20150821171510.167"><vh>Tree image open</vh></v>
<v t="tbrown.20150821171510.168"><vh>Tree icon separation</vh></v>
</v>
<v t="tbrown.20150821171510.169"><vh>Misc. plugins</vh>
<v t="tbrown.20150821171510.170"><vh>Bookmarks plugin</vh>
<v t="tbrown.20150821171510.171"><vh>Bookmarks base</vh>
<v t="tbrown.20150821171510.172"><vh>Color</vh></v>
<v t="tbrown.20150821171510.173"><vh>Border</vh></v>
<v t="tbrown.20150821171510.174"><vh>Decoration</vh></v>
<v t="tbrown.20150821171510.175"><vh>Family</vh></v>
<v t="tbrown.20150821171510.176"><vh>Margin</vh></v>
<v t="tbrown.20150821171510.177"><vh>Padding</vh></v>
<v t="tbrown.20150821171510.178"><vh>Size</vh></v>
<v t="tbrown.20150821171510.179"><vh>Style</vh></v>
<v t="tbrown.20150821171510.180"><vh>Weight</vh></v>
</v>
<v t="tbrown.20150821171510.181"><vh>Bookmarks children</vh>
<v t="tbrown.20150821171510.182"><vh>Color</vh></v>
<v t="tbrown.20150821171510.183"><vh>Decoration</vh></v>
<v t="tbrown.20150821171510.184"><vh>Family</vh></v>
<v t="tbrown.20150821171510.185"><vh>Size</vh></v>
<v t="tbrown.20150821171510.186"><vh>Style</vh></v>
<v t="tbrown.20150821171510.187"><vh>Weight</vh></v>
</v>
<v t="tbrown.20150821171510.188"><vh>Bookmarks current</vh>
<v t="tbrown.20150821171510.189"><vh>Color</vh></v>
<v t="tbrown.20150821171510.190"><vh>Decoration</vh></v>
<v t="tbrown.20150821171510.191"><vh>Size</vh></v>
<v t="tbrown.20150821171510.192"><vh>Style</vh></v>
<v t="tbrown.20150821171510.193"><vh>Weight</vh></v>
</v>
<v t="tbrown.20150821171510.194"><vh>Bookmarks expanded</vh>
<v t="tbrown.20150821171510.195"><vh>Color</vh></v>
<v t="tbrown.20150821171510.196"><vh>Decoration</vh></v>
<v t="tbrown.20150821171510.197"><vh>Size</vh></v>
<v t="tbrown.20150821171510.198"><vh>Style</vh></v>
<v t="tbrown.20150821171510.199"><vh>Weight</vh></v>
<v t="tbrown.20150821171510.200"><vh>Size</vh></v>
</v>
</v>
<v t="tbrown.20150821171510.201"><vh>Screencast plugin</vh>
<v t="tbrown.20150821171510.202"><vh>Background</vh></v>
<v t="tbrown.20150821171510.203"><vh>Font-family</vh></v>
<v t="tbrown.20150821171510.204"><vh>Font-size</vh></v>
<v t="tbrown.20150821171510.205"><vh>Font-weight</vh></v>
<v t="tbrown.20150821171510.206"><vh>Font-style</vh></v>
</v>
</v>
</v>
</v>
<v t="ekr.20110611092035.16492"><vh>Mouse</vh>
<v t="ekr.20080324105006.6"><vh>@bool allow_middle_button_paste = False</vh></v>
</v>
<v t="ekr.20051123100536"><vh>Plugins</vh>
<v t="ekr.20041119034357.13"><vh>@bool use_plugins = True</vh></v>
<v t="ekr.20071113084330"><vh>@bool warn_when_plugins_fail_to_load = True</vh></v>
<v t="ekr.20070224073109.1"><vh>@enabled-plugins</vh></v>
<v t="tbrown.20091129085043.11789"><vh>active_path plugin</vh>
<v t="tbrown.20091129085043.11790"><vh>@string active_path_attype = auto</vh></v>
<v t="tbrown.20091129085043.11792"><vh>@string active_path_event = headdclick1</vh></v>
<v t="tbrown.20091129085043.11793"><vh>@data active_path_ignore</vh></v>
<v t="tbrown.20111114201921.23020"><vh>@data active_path_bin_open</vh></v>
<v t="tbrown.20091129085043.11795"><vh>@data active_path_autoload</vh></v>
<v t="tbrown.20100304170159.5189"><vh>@bool active_path_load_docstring = False</vh></v>
<v t="tbrown.20100401100336.16108"><vh>@float active_path_timeout_seconds = 10.</vh></v>
<v t="tbrown.20100401100336.31583"><vh>@int active_path_max_size = 1000000</vh></v>
</v>
<v t="vitalije.20100306144625.8944"><vh>autosave plugin</vh>
<v t="vitalije.20100306144625.8945"><vh>@bool mod_autosave_active = True</vh></v>
<v t="vitalije.20100306144625.8946"><vh>@int mod_autosave_interval = 300</vh></v>
</v>
<v t="tbrown.20110430104941.30247"><vh>backlink</vh>
<v t="tbrown.20110430104941.30250"><vh>@int backlink_name_levels = 0</vh></v>
</v>
<v t="tbrown.20140102100730.27777"><vh>bookmarks</vh>
<v t="tbrown.20140102100730.27778"><vh>@int bookmarks_levels = 1</vh></v>
<v t="tbrown.20171128211219.1"><vh>@data bookmarks-modifiers</vh></v>
</v>
<v t="ekr.20060807103220"><vh>datenodes plugin</vh>
<v t="ekr.20060807103220.1"><vh>@string datenodes_body_text = To do...</vh></v>
<v t="ekr.20060807103220.2"><vh>@string datenodes_day_node_headline = %Y-%m-%d</vh></v>
<v t="ekr.20060807103220.3"><vh>@string datenodes_month_node_day_headline = %d: %A</vh></v>
<v t="ekr.20060807103220.4"><vh>@string datenodes_month_node_month_headline = %B %Y</vh></v>
<v t="ekr.20060807103220.5"><vh>@bool datenodes_month_node_omit_saturdays = True</vh></v>
<v t="ekr.20060807103220.6"><vh>@bool datenodes_month_node_omit_sundays = True</vh></v>
<v t="ekr.20060807103220.7"><vh>@string datenodes_year_node_day_headline = %d: %A</vh></v>
<v t="ekr.20060807103220.8"><vh>@string datenodes_year_node_month_headline = %B</vh></v>
<v t="ekr.20060807103220.9"><vh>@string datenodes_year_node_year_headline = %Y</vh></v>
<v t="ekr.20060807103220.10"><vh>@bool datenodes_year_node_omit_saturdays = True</vh></v>
<v t="ekr.20060807103220.11"><vh>@bool datenodes_year_node_omit_sundays = True</vh></v>
</v>
<v t="ekr.20100907092300.6957"><vh>Inkscape options</vh>
<v t="ekr.20100907092300.6958"><vh>@string inkscape-template = ../docs/inkscape-template.svg</vh></v>
<v t="ekr.20100907092300.6959"><vh>@string inkscape-bin = "c:\Program Files (x86)\Inkscape\inkscape.exe"</vh></v>
</v>
<v t="ekr.20111003085631.15488"><vh>mod_http plugin</vh>
<v t="ekr.20111003085631.15489"><vh>@bool http_active = True</vh></v>
<v t="btheado.20131124162237.2493"><vh>@string http_ip = 127.0.0.1</vh></v>
<v t="ekr.20111003085631.15490"><vh>@int http_port = 8130</vh></v>
<v t="ekr.20111003104518.15499"><vh>@@string http_bookmark_unl = Bookmarks</vh></v>
<v t="ekr.20161003141513.1"><vh>mod_http stylesheet</vh>
<v t="ekr.20161003141513.2"><vh>@data http_stylesheet</vh></v>
<v t="ekr.20161011130632.1"><vh>@@data http_stylesheet</vh></v>
</v>
<v t="ekr.20161003141448.1"><vh>mod_http script</vh>
<v t="ekr.20161003141448.2"><vh>@data http_script</vh></v>
</v>
</v>
<v t="ekr.20110611092035.16483"><vh>mod_scripting plugin</vh>
<v t="tbrown.20100524101550.4704"><vh>@string mod_scripting_subtext = ▼</vh></v>
</v>
<v t="TL.20090225102340.33"><vh>nodeActions plugin</vh>
<v t="TL.20090225102340.34"><vh>@bool nodeActions_save_atFile_nodes = False</vh></v>
<v t="TL.20090303191843.1"><vh>@int nodeActions_message_level = 1</vh></v>
</v>
<v t="peckj.20140113150237.4603"><vh>nodediff plugin</vh>
<v t="peckj.20140113150237.4604"><vh>@string node-diff-style = compare</vh></v>
</v>
<v t="peckj.20131101143409.5814"><vh>nodewatch plugin</vh>
<v t="peckj.20131101143409.5816"><vh>@bool nodewatch_autoexecute_scripts = False</vh></v>
</v>
<v t="ekr.20060919171527"><vh>opml plugin</vh>
<v t="ekr.20060921080239"><vh>@bool opml_read_derived_files = True</vh></v>
<v t="ekr.20060919171527.1"><vh>@bool opml_use_outline_elements = True</vh></v>
<v t="ekr.20060919195145"><vh>@string opml_version = 2.0</vh></v>
<v t="ekr.20060919181622"><vh>@bool opml_write_body_text = True</vh></v>
<v t="ekr.20060921080239.1"><vh>@bool opml_write_derived_files = True</vh></v>
<v t="ekr.20060919173031"><vh>@bool opml_write_leo_details = True</vh></v>
<v t="ekr.20060919173031.1"><vh>@bool opml_write_leo_globals_attributes = True</vh></v>
<v t="ekr.20060922110220"><vh>@bool opml_write_uAs = True</vh></v>
<v t="ekr.20060919171527.2"><vh>@string opml_namespace = leo:com:leo-opml-version-1</vh></v>
</v>
<v t="peckj.20130514082859.5599"><vh>printing plugin</vh>
<v t="peckj.20130514082859.5600"><vh>@string printing-font-size = 12</vh></v>
<v t="peckj.20130514082859.5601"><vh>@string printing-font-family = DejaVu Sans Mono</vh></v>
</v>
<v t="tbrown.20130813134319.7223"><vh>richtext plugin</vh>
<v t="tbrown.20130813134319.7224"><vh>@bool richtext_cke_autosave = False</vh></v>
<v t="tbrown.20130813181208.23979"><vh>@data richtext_cke_config</vh></v>
</v>
<v t="peckj.20131012154112.5294"><vh>rss plugin</vh>
<v t="peckj.20131012154112.5295"><vh>@string rss-headline-format = [&lt;date&gt;] &lt;title&gt;</vh></v>
<v t="peckj.20131012154112.5296"><vh>@data rss-body-format</vh></v>
<v t="peckj.20131012154112.5297"><vh>@string rss-date-format = %Y-%m-%d %I:%M %p</vh></v>
<v t="peckj.20131012154112.5298"><vh>@bool rss-sort-newest-first = True</vh></v>
</v>
<v t="ekr.20100910115903.8297"><vh>screenshot settings</vh>
<v t="ekr.20100910115903.8299"><vh>@string screenshot-bin = "c:\Program Files (x86)\Inkscape\inkscape.exe"</vh></v>
</v>
<v t="ekr.20060930111325"><vh>scripting plugin</vh>
<v t="ekr.20060930111325.2"><vh>@bool scripting-at-button-nodes = True</vh></v>
<v t="peckj.20131113130420.8678"><vh>@bool scripting-at-rclick-nodes = False</vh></v>
<v t="ekr.20060930111325.3"><vh>@bool scripting-at-commands-nodes = True</vh></v>
<v t="ekr.20060930111325.4"><vh>@bool scripting-at-plugin-nodes = False</vh></v>
<v t="ekr.20060930111325.5"><vh>@bool scripting-at-script-nodes = False</vh></v>
<v t="ekr.20060930111325.6"><vh>@bool scripting-create-debug-button = False</vh></v>
<v t="ekr.20060930111325.7"><vh>@bool scripting-create-run-script-button = False</vh></v>
<v t="ekr.20060930112030"><vh>@bool scripting-create-script-button-button = True</vh></v>
<v t="ekr.20060930111325.1"><vh>@int scripting-max-button-size = 18</vh></v>
</v>
<v t="peckj.20140218151502.4819"><vh>sftp plugin</vh>
<v t="peckj.20140218151502.4820"><vh>@bool sftp-cache-credentials = True</vh></v>
</v>
<v t="tbrown.20130310101647.34743"><vh>valuespace plugin</vh>
<v t="tbrown.20130310101647.34744"><vh>@bool valuespace_vs_eval_redirect = True</vh></v>
</v>
<v t="ekr.20051123100536.1"><vh>vim plugin</vh>
<v t="ekr.20051123100536.2"><vh>@@string vim_cmd = c:\Program Files\vim\vim63\gvim --servername LEO</vh></v>
<v t="ekr.20051123100536.3"><vh>@@string vim_exe = c:\Program Files\vim\vim63\gvim</vh></v>
<v t="ekr.20150327002834.1"><vh>@bool vim_plugin_trace = False</vh></v>
<v t="ekr.20071114072753"><vh>@bool vim_plugin_opens_url_nodes = False</vh></v>
</v>
<v t="tbrown.20141101105337.1"><vh>wikiview plugin</vh>
<v t="tbrown.20141101105337.2"><vh>@data wikiview-link-patterns</vh></v>
<v t="tbrown.20141101105337.3"><vh>@bool wikiview-active = True</vh></v>
</v>
<v t="ekr.20090202191501.10"><vh>xemacs plugin</vh>
<v t="ekr.20090202191501.11"><vh>@string xemacs_exe = c:\XEmacs\XEmacs-21.4.21\i586-pc-win32\xemacs.exe</vh></v>
</v>
<v t="ekr.20060904211808"><vh>zodb plugin</vh>
<v t="ekr.20060904211808.1"><vh>@string zodb_storage_file = c:\prog\zopeTemp\leo.fs</vh></v>
</v>
</v>
<v t="ekr.20140916113003.19609"><vh>Qt Gui Misc settings</vh>
<v t="ekr.20081023060109.14"><vh>@bool qt-use-scintilla = False</vh></v>
<v t="ekr.20081022181056.10"><vh>@data qt-scintilla-styles</vh></v>
<v t="ekr.20150322061147.1"><vh>@int qt-cursor-width = 1</vh></v>
<v t="ekr.20081020075840.10"><vh>@int qt-scintilla-zoom-in = 0</vh></v>
<v t="ekr.20100507153425.8304"><vh>@string qt-toolbar-location=top</vh></v>
<v t="leohag.20081204085551.13"><vh>@string qt-ui-file-name = qt_main.ui</vh></v>
</v>
<v t="ekr.20110611092035.16481"><vh>Scripting</vh>
<v t="ekr.20041119041019"><vh>@bool redirect_execute_script_output_to_log_pane = False</vh></v>
<v t="ekr.20061029091403"><vh>@bool show_full_tracebacks_in_scripts = False</vh></v>
</v>
<v t="ekr.20051025084017"><vh>Spell checking</vh>
<v t="ekr.20100904095239.8440"><vh>@string enchant_language = en_US</vh></v>
<v t="ekr.20100904095239.8441"><vh>@string enchant_local_dictionary = None</vh></v>
</v>
<v t="ekr.20041119034357.70"><vh>Syntax coloring</vh>
<v t="ekr.20170202104705.1"><vh>@bool color-doc-parts-as-rest = True</vh></v>
<v t="ekr.20060828110551"><vh>Default colors, used if no language-specific color are in effect</vh>
<v t="ekr.20111024091133.16650"><vh>Colors for Leo constructs</vh>
<v t="ekr.20111004182631.15542"><vh>@color doc_part_color = firebrick3</vh></v>
<v t="ekr.20111004182631.15546"><vh>@color leo_keyword_color = #00aa00</vh></v>
<v t="ekr.20111004182631.15548"><vh>@color section_name_color = red</vh></v>
<v t="ekr.20111004182631.15549"><vh>@color show_invisibles_space_color = #E5E5E5</vh></v>
<v t="ekr.20111004182631.15550"><vh>@color show_invisibles_tab_color = #CCCCCC</vh></v>
<v t="ekr.20111004182631.15552"><vh>@color undefined_section_name_color = red</vh></v>
<v t="ekr.20111024091133.16671"><vh>@color url_color = purple</vh></v>
</v>
<v t="ekr.20111024091133.16651"><vh>Colors for standard jEdit tags</vh>
<v t="ekr.20060504140351"><vh>@color comment1_color = firebrick3</vh></v>
<v t="ekr.20060504140408"><vh>@color comment2_color = firebrick3</vh></v>
<v t="ekr.20060504140408.1"><vh>@color comment3_color = plum3</vh></v>
<v t="ekr.20060504140408.2"><vh>@color comment4_color = orchid1</vh></v>
<v t="ekr.20060504131831.1"><vh>@color keyword1_color = blue</vh></v>
<v t="ekr.20060827102902"><vh>@color keyword2_color = blue</vh></v>
<v t="ekr.20060827102902.1"><vh>@color keyword3_color = blue</vh></v>
<v t="ekr.20060827102902.2"><vh>@color keyword4_color = blue</vh></v>
<v t="ekr.20060704090341"><vh>@color label_color = red</vh></v>
<v t="ekr.20060504131831.2"><vh>@color literal1_color = #00aa00</vh></v>
<v t="ekr.20060504134056"><vh>@color literal2_color = #00aa00</vh></v>
<v t="ekr.20060504134056.1"><vh>@color literal3_color = #00aa00</vh></v>
<v t="ekr.20060504134056.2"><vh>@color literal4_color = #00aa00</vh></v>
<v t="ekr.20060826152759"><vh>@color markup_color = blue</vh></v>
<v t="ekr.20060713101831"><vh>@color operator_color = None</vh></v>
</v>
</v>
<v t="ekr.20060828110551.1"><vh>Language-specific colors</vh>
<v t="ekr.20170819113555.1"><vh>patch</vh>
<v t="ekr.20170819113555.2"><vh>@color patch_keyword1_color = green</vh></v>
<v t="ekr.20170819113555.3"><vh>@color patch_keyword2_color = red</vh></v>
<v t="ekr.20170819170521.1"><vh>@color patch_keyword3_color = blue</vh></v>
<v t="ekr.20170819113555.4"><vh>@color patch_literal1_color = blue</vh></v>
<v t="ekr.20170819113555.5"><vh>@color patch_literal2_color = blue</vh></v>
</v>
<v t="ekr.20060828110551.2"><vh>php</vh>
<v t="ekr.20060828110551.3"><vh>@color php_operator_color = DodgerBlue1</vh></v>
<v t="ekr.20060828145228.1"><vh>@font php keyword fonts</vh></v>
</v>
<v t="ekr.20080703111151.18"><vh>Forth fonts, colors &amp; settings</vh>
<v t="ekr.20080703111151.21"><vh>@color forth_keyword3_color = black</vh></v>
<v t="ekr.20080703111151.22"><vh>@color forth_keyword4_color = black</vh></v>
<v t="ekr.20080703111151.23"><vh>@color forth_keyword5_color = black</vh></v>
<v t="ekr.20080705064822.2"><vh>@data forth-bold-italic-words</vh></v>
<v t="ekr.20080705064822.3"><vh>@data forth-bold-words</vh></v>
<v t="ekr.20080705064822.1"><vh>@data forth-defwords</vh></v>
<v t="ekr.20080705064822.4"><vh>@data forth-delimiter-pairs</vh></v>
<v t="ekr.20080705064822.6"><vh>@data forth-italic-words</vh></v>
<v t="ekr.20080705064822.7"><vh>@data forth-string-word-pairs</vh></v>
<v t="ekr.20080705064822.5"><vh>@data forth-words</vh></v>
<v t="ekr.20080703111151.17"><vh>@font forth keyword2_font</vh></v>
<v t="ekr.20080703111151.12"><vh>@font forth keyword3_font</vh></v>
<v t="ekr.20080703111151.14"><vh>@font forth keyword4_font</vh></v>
<v t="ekr.20080703111151.15"><vh>@font forth keyword5_font</vh></v>
</v>
</v>
<v t="ekr.20111004182631.15533"><vh>Options</vh>
<v t="ekr.20111004182631.15534"><vh>@bool color_cweb_comments_with_latex = True</vh></v>
<v t="ekr.20111004182631.15535"><vh>@bool color_cweb_doc_parts_with_latex = True</vh></v>
<v t="ekr.20111004182631.15536"><vh>@bool color_directives_in_plain_text = True</vh></v>
<v t="tbrown.20170710093248.1"><vh>@bool color_trailing_whitespace = True</vh></v>
<v t="ekr.20100102121150.6344"><vh>@bool show-invisibles-by-default = False</vh></v>
<v t="ekr.20111004182631.15537"><vh>@bool underline_undefined_section_names = True</vh></v>
<v t="ekr.20111004182631.15538"><vh>@bool use_hyperlinks = False</vh></v>
<v t="ekr.20060201111002"><vh>@bool use_syntax_coloring = True</vh></v>
<v t="ekr.20090724102842.2492"><vh>@int qt_max_colorized_chars = 0</vh></v>
</v>
</v>
<v t="ekr.20110611092035.16463"><vh>Tree operation</vh>
<v t="nh910.20110621123823.3423"><vh>@bool collapse_nodes_after_move = True</vh></v>
<v t="ekr.20060930085532"><vh>@bool collapse_nodes_during_finds = True</vh></v>
<v t="ekr.20080315083057.7"><vh>@bool collapse_nodes_while_spelling = True</vh></v>
<v t="ekr.20111109104336.12503"><vh>@bool collapse_on_lt_arrow = True</vh></v>
<v t="ekr.20070615094204"><vh>@bool contractVisitedNodes = True</vh></v>
<v t="tbnorth.20160414102131.1"><vh>@bool drag-alt-drag-expands = True</vh></v>
<v t="ekr.20041119050749.4"><vh>@bool enable_drag_messages = False</vh></v>
<v t="ekr.20131008181812.17533"><vh>@bool enable_tree_dragging = True</vh></v>
<v t="ekr.20061012122620"><vh>@bool insert_new_nodes_at_end = False</vh></v>
<v t="tbrown.20110212091818.20118"><vh>@bool inter_outline_drag_moves = False</vh></v>
<v t="ekr.20100107060708.6390"><vh>@bool qt-tree-multiple-selection = True</vh></v>
<v t="ekr.20110601103939.19339"><vh>@bool single_click_auto_edits_headline = False</vh></v>
<v t="ekr.20061007211759"><vh>@bool sparse_move_outline_left = False</vh></v>
<v t="ekr.20060122105527.7"><vh>@bool stayInTreeAfterSelect = True</vh></v>
<v t="ekr.20061002115414.1"><vh>@float outline_nav_extend_delay = 2.0</vh></v>
<v t="chris.20180324074923.1"><vh>@int icon-height = 16</vh></v>
</v>
<v t="ekr.20041119034357.15"><vh>Unicode options</vh>
<v t="ekr.20080212084020"><vh>@string default_at_auto_file_encoding = utf-8</vh></v>
<v t="ekr.20041119042929.9"><vh>@string default_derived_file_encoding = utf-8</vh></v>
<v t="ekr.20041119042929.10"><vh>@string new_leo_file_encoding = utf-8</vh></v>
<v t="ekr.20090620112052.9070"><vh>@string qt-default-encoding = UTF-8</vh></v>
</v>
<v t="ekr.20050203090810"><vh>Unit test option</vh>
<v t="ekr.20050203085250"><vh>@int global_setting_for_unit_tests = 132</vh></v>
</v>
<v t="ekr.20110611092035.16471"><vh>Widget colors</vh>
<v t="ekr.20041119034357.67"><vh>@color split_bar_color = LightSteelBlue2</vh></v>
<v t="ekr.20130705090546.10663"><vh>@int colorer_delay = 200</vh></v>
<v t="ekr.20130705090546.10662"><vh>@int colorer_max_lines = 100</vh></v>
<v t="ekr.20080326060254.3"><vh>@string target_language = plain</vh></v>
<v t="ekr.20041213105007.2"><vh>Body pane colors (deprecated)</vh>
<v t="ekr.20041119034357.41"><vh>@color body_cursor_background_color = None</vh></v>
<v t="ekr.20041119034357.40"><vh>@color body_cursor_foreground_color = None</vh></v>
<v t="ekr.20041119034357.50"><vh>@color body_insertion_cursor_color = None</vh></v>
<v t="ekr.20041119034357.49"><vh>@color body_text_background_color = None</vh></v>
<v t="ekr.20041119034357.48"><vh>@color body_text_foreground_color = None</vh></v>
<v t="ekr.20060605081712"><vh>@color command_mode_bg_color = #f2fdff</vh></v>
<v t="ekr.20060822101942.1"><vh>@color command_mode_fg_color = None</vh></v>
<v t="ekr.20080514082950.2"><vh>@color insert_mode_bg_color = #fdf5f5</vh></v>
<v t="ekr.20060605081712.3"><vh>@color insert_mode_fg_color = black</vh></v>
<v t="ekr.20060606085536"><vh>@color overwrite_mode_bg_color = azure2</vh></v>
<v t="ekr.20060606085536.1"><vh>@color overwrite_mode_fg_color = black</vh></v>
<v t="ekr.20080511041907.1"><vh>@color unselected_body_bg_color = #ffffef</vh></v>
<v t="ekr.20080511041907.2"><vh>@color unselected_body_fg_color = black</vh></v>
</v>
<v t="ekr.20041213105007.3"><vh>Log pane colors</vh>
<v t="ekr.20041119052015"><vh>@color log_error_color = red</vh></v>
<v t="ekr.20120928142052.11488"><vh>@color log_warning_color = blue</vh></v>
<v t="ekr.20041119052015.2"><vh>@color log_text_foreground_color = None</vh></v>
<v t="ekr.20041119053445"><vh>@color log_text_background_color = None</vh></v>
<v t="ekr.20041217184352.2"><vh>@color log_pane_background_color = #f2fdff</vh></v>
<v t="ekr.20051020125928"><vh>@color log_pane_Find_tab_background_color = #d6c7d3</vh></v>
<v t="ekr.20051025070845"><vh>@color log_pane_Spell_tab_background_color = MistyRose1</vh></v>
</v>
<v t="ekr.20100313080341.8368"><vh>Minibuffer background colors</vh>
<v t="ekr.20100313080341.8369"><vh>@color minibuffer-background-color = lightblue</vh></v>
<v t="ekr.20100313080341.8370"><vh>@color minibuffer-error-color = red</vh></v>
<v t="ekr.20120926072255.11432"><vh>@color minibuffer-foreground-color = black</vh></v>
<v t="ekr.20100313080341.8371"><vh>@color minibuffer-warning-color = lightgrey</vh></v>
</v>
<v t="ekr.20160514162747.1"><vh>Tab colors</vh>
<v t="ekr.20160514162753.1"><vh>@color selected-tab-bg = @LightSteelBlue1</vh></v>
<v t="ekr.20160514162820.1"><vh>@color unselected-tab-bg = lightgrey</vh></v>
</v>
</v>
<v t="ekr.20041213105954"><vh>Windows</vh>
<v t="ekr.20080412115752.1"><vh>@data fixedWindowPosition</vh></v>
<v t="ekr.20041119034357.38"><vh>Body pane options</vh>
<v t="jlunz.20151119171553.1"><vh>@bool cursor_stay_on_paste = True</vh></v>
<v t="ekr.20061010111324"><vh>@bool select_all_text_when_editing_headlines = False</vh></v>
<v t="ekr.20060531094310"><vh>@bool autoindent_in_nocolor_mode = True</vh></v>
<v t="ekr.20041119034357.43"><vh>@bool body_gmt_time = False</vh></v>
<v t="jlunz.20151120072157.1"><vh>@bool body_pane_wraps = True</vh></v>
<v t="ekr.20060216135834"><vh>@bool enable_autocompleter_initially = False</vh></v>
<v t="ekr.20060603070801"><vh>@bool enable_calltips_initially = False</vh></v>
<v t="ekr.20041119034357.44"><vh>@bool smart_auto_indent = False</vh></v>
<v t="ekr.20090213065933.11"><vh>@bool smart_tab = True</vh></v>
<v t="ekr.20041119034357.53"><vh>@@@int additional_body_text_border = 0</vh></v>
<v t="ekr.20041119034357.42"><vh>@string body_time_format_string = %m/%d/%Y %H:%M:%S</vh></v>
<v t="ekr.20060620085654"><vh>@string editor_orientation = horizontal</vh></v>
</v>
<v t="ekr.20080930072519.3"><vh>Icon bar options</vh>
<v t="ekr.20160918113150.1"><vh>@bool show_iconbar = True</vh></v>
<v t="ekr.20080930072519.4"><vh>@int icon_bar_widgets_per_row = 20</vh></v>
</v>
<v t="ekr.20041213105954.1"><vh>Log pane options</vh>
<v t="ekr.20041119052015.1"><vh>@bool log_pane_wraps = False</vh></v>
</v>
<v t="ekr.20041119034357.56"><vh>Options for new windows</vh>
<v t="ekr.20071024145953"><vh>@bool big_outline_pane = False</vh></v>
<v t="ekr.20060930085332"><vh>@bool outline_pane_has_initial_focus = False</vh></v>
<v t="ekr.20041119034357.57"><vh>@ratio initial_horizontal_ratio = 0.4</vh></v>
<v t="ekr.20041119034357.58"><vh>@ratio initial_horizontal_secondary_ratio = 0.8</vh></v>
<v t="ekr.20041119034357.60"><vh>@ratio initial_vertical_ratio = 0.5</vh></v>
<v t="ekr.20041119034357.61"><vh>@ratio initial_vertical_secondary_ratio = 0.65</vh></v>
<v t="ekr.20041119034357.62"><vh>@int initial_window_height = 600</vh></v>
<v t="ekr.20041119034357.63"><vh>@int initial_window_left =  20</vh></v>
<v t="ekr.20041119034357.64"><vh>@int initial_window_top = 20</vh></v>
<v t="ekr.20041119034357.65"><vh>@int initial_window_width = 800</vh></v>
</v>
<v t="ekr.20041213105954.2"><vh>Splitter options</vh>
<v t="ekr.20041119034357.69"><vh>@int split_bar_width = 6</vh></v>
<v t="edward.20081129091117.12"><vh>@string initial_split_orientation = vertical</vh></v>
<v t="ekr.20041119034357.68"><vh>@string split_bar_relief = groove</vh></v>
<v t="tbrown.20130916082438.55678"><vh>@string status_line_split_sizes = 1 2</vh></v>
</v>
<v t="tbrown.20140505094209.37266"><vh>@bool outline_tabs_show_close = True</vh></v>
</v>
</v>
<v t="ekr.20180411070112.1"></v>
<v t="ekr.20120205022040.15411"></v>
<v t="ekr.20150216135059.1"></v>
</vnodes>
<tnodes>
<t tx="TL.20080702085131.2">If True: Save the Leo file and all modified derived files every time the external editor saves a modified file.

If False: Don't save the Leo file or any derived files when the external editor saves a file.</t>
<t tx="TL.20080702085131.3">If True: When a file is saved by the external editor the node associated with that file is becomes that selected node in Leo.

If False: The current node remains selected when a file, associated with a different node, is saved by the external editor.</t>
<t tx="TL.20080702085131.4">Only supported with the mod_tempfname.py plugin.

True: The plugin will store temporary files utilizing cleaner
file names (no unique number is appended to the node's headline text).
Unique temporary directory paths are used to insure unique files are
created by creating temporary directories reflecting each node's ancestor
nodes in the Leo outline. Note: Do not have multiple sibling nodes (nodes
having the same parent node) in Leo with the same headline text. There will
be a conflict if both are opened in an external editor at the same time.

False: The plugin will store temporary files with an appended
unique number to insure unique temporary filenames.
</t>
<t tx="TL.20080702085131.5">Only supported with the mod_tempfname.py plugin.

True: The open-with commands will use the file extension of the node's
derived file for the extension of the temporary file passed to the external
editor. This can be useful for external editors that are providing text
highlighting or other file type specific capabilities.

False or no derived file exists for that node: The open-with commands will
use the file extension of the node's default language (set by the @language
command) or '.txt' if none exists.</t>
<t tx="TL.20090225102340.33"></t>
<t tx="TL.20090225102340.34">If set to True then if a match occurs on an @file type node the nodeActions plugin will save the clicked @file type node (and any other @file type nodes) to disk, if modified, before running the script.
</t>
<t tx="TL.20090303191843.1">Specifies the type of messages to be sent to the log pane.	Specifying a
higher message level will display that level and all lower levels.
The following integer values are supported:

0 = no messages
1 = Plugin triggered and the patterns that were matched (default)
2 = Double-click event passed or not to next plugin
3 = Patterns that did not match
4 = Code debugging messages
</t>
<t tx="btheado.20131124162237.2493"></t>
<t tx="chris.20180320083521.1">Enable/Disable word count display in status line.</t>
<t tx="chris.20180324074923.1"></t>
<t tx="edward.20081129091117.12">horizontal: body pane to the right
vertical: body pane on the botton
</t>
<t tx="edward.20150614045745.1">QWidget#body-text-renderer {
    color:              @render-fg;
    background-color:   @render-bg;
}</t>
<t tx="edward.20150614045858.1"></t>
<t tx="edward.20150614045915.1"></t>
<t tx="edward.20150614045931.1"></t>
<t tx="edward.20150615144141.1"></t>
<t tx="edward.20150615144141.2">url(/home/edward/leo.repo/leo-editor/leo/Icons/nodes-dark/triangles/closed.png)</t>
<t tx="edward.20150615144141.3">url(/home/edward/leo.repo/leo-editor/leo/Icons/nodes-dark/triangles/open.png)</t>
<t tx="ekr.20041119034357.1">@language rest
@wrap

This @settings tree contains all active settings.

Settings outside this tree have no effect.

The node "Qt Gui Stylesheet settings" contains most of the setting relating to appearance.</t>
<t tx="ekr.20041119034357.10">See the "Tree Operation" node for settings that affect how the tree pane works.</t>
<t tx="ekr.20041119034357.12"></t>
<t tx="ekr.20041119034357.13">True: Leo loads plugins on startup.

Warnings:

- This is a global option ONLY. It can only be set in the leoSettings.leo files
that Leo reads during startup. Changing this option in other Leo files will have
NO effect.

- When this option is enabled, plugins could potentially execute HOSTILE CODE
contained in Leo files. See further warnings in LeoDocs.leo.</t>
<t tx="ekr.20041119034357.14">This option affects how Leo treats body text in @root trees.

True:    Body text in @root trees start in doc mode.

This is the way @root trees always worked prior to version 3.10.

False:    Body text in @root trees start in code mode.

This way makes @root trees more compatible with @file trees.</t>
<t tx="ekr.20041119034357.15"></t>
<t tx="ekr.20041119034357.16"></t>
<t tx="ekr.20041119034357.17"></t>
<t tx="ekr.20041119034357.18">Limit directory searches to files with the given file extension.

None  Compares all files when comparing directories.
.py   Compares only .py files when comparing directories.</t>
<t tx="ekr.20041119034357.19">These options have no effect when comparing directories.</t>
<t tx="ekr.20041119034357.20">
</t>
<t tx="ekr.20041119034357.29">DEPRECATED

The default directory used if no directory specified in @path, @root or @file directives.

</t>
<t tx="ekr.20041119034357.31">The width of tabs on the screen.  This setting is also used when writing doc parts.

Valid values: Any nonzero integer.

Negative tab widths (recommended) cause Leo to convert tabs to blanks when typing.</t>
<t tx="ekr.20041119034357.32">The page width for wrapping doc parts in derived files.

Valid values: any nonzero positive integer.</t>
<t tx="ekr.20041119034357.38"></t>
<t tx="ekr.20041119034357.40">

Foreground color for the cursor in body text.

</t>
<t tx="ekr.20041119034357.41">Background color for the cursor in body text.

</t>
<t tx="ekr.20041119034357.42">The format string used when creating the Time/Date string for the Insert Time/Date command.
See the Python documentation for time.strftime for full details.

Examples:

1/30/2003 8:31:55
%m/%d/%y %H:%M:%S

Thu, 30 Jan 2003 16:57:12
%a, %d %b %Y %H:%M:%S</t>
<t tx="ekr.20041119034357.43">True:  use gmt time.
False: use local time.</t>
<t tx="ekr.20041119034357.44">True:  auto-indent aligns with open ({[ brackets

False: auto-indent increases indentation by one tab for Python only.</t>
<t tx="ekr.20041119034357.48">Foreground color of body text.  This setting *is* used in the QtGui.

Note: this setting can be overridden by the x_mode_fg_color settings.</t>
<t tx="ekr.20041119034357.49">Background color of body text.  This setting *is* used in the QtGui.

#ffecea

Note: this setting can be overridden by the x_mode_bg_color settings.</t>
<t tx="ekr.20041119034357.5">False: Leo writes leoSettings.leo files.</t>
<t tx="ekr.20041119034357.50">Color of insertion cursor

</t>
<t tx="ekr.20041119034357.53">Additional border in body text pane, in pixels.</t>
<t tx="ekr.20041119034357.56">These options apply only to windows opened with the New command.

**Important**: When using the qttabs gui, these options have no effect.
That is, opening a new "window" means opening a new tab.</t>
<t tx="ekr.20041119034357.57">The ratio of tree pane size to body pane size when splitting primary panes horizontally.

Valid values: 0.0 to 1.0.

**Important**: Leo **does** save this ratio when saving a .leo file, so Leo
always uses this ratio only when creating a new outline.</t>
<t tx="ekr.20041119034357.58">The ratio of outline (tree) pane size to log pane size when splitting the primary panes horizontally.

Valid values: 0.0 to 1.0.

**Important**: Leo does not save this ratio when saving a .leo file, so Leo
always uses this ratio when opening a file that is being split horizontally.</t>
<t tx="ekr.20041119034357.60">The ratio of tree pane size to body pane size when splitting primary panes vertically.

Valid values: 0.0 to 1.0.

**Important**: Leo **does** save this ratio when saving a .leo file, so Leo
always uses this ratio only when creating a new outline.</t>
<t tx="ekr.20041119034357.61">The ratio of outline (tree) pane size to log pane size when splitting the primary panes vertically.

Valid values: 0.0 to 1.0.

**Important**: Leo does not save this ratio when saving a .leo file, so Leo
always uses this ratio when opening a file that is being split vertically.</t>
<t tx="ekr.20041119034357.62">Height of window in pixels.
    
</t>
<t tx="ekr.20041119034357.63">Distance from left of screen of window, in pixels.
</t>
<t tx="ekr.20041119034357.64">Distance from top of screen of window, in pixels.</t>
<t tx="ekr.20041119034357.65">Width window in pixels.

</t>
<t tx="ekr.20041119034357.67">The color of the split bar. gray90 also looks good.</t>
<t tx="ekr.20041119034357.68">The -relief option for the split bar.</t>
<t tx="ekr.20041119034357.69">The width of the split bar, in pixels (must be an integer).</t>
<t tx="ekr.20041119034357.7"></t>
<t tx="ekr.20041119034357.70">@nocolor-node

These are the settings used by Leo's Qt syntax colorer.

Syntax colors may be any valid Tk color name or color value.

For example, "00aa00" is the dark green used by IDLE.

See http://www.tcl.tk/man/tcl8.3/TkCmd/colors.htm for a list of valid color
names. These names are case sensitive, for example: BlanchedAlmond.</t>
<t tx="ekr.20041119034357.8">Example:

"Created by Leo at @date"

A comment to be iserted in derived files just after the initial @+leo line.
The comment will appear in an @comment sentinel.
Notes:
1. Leo replaces @date with the date and time that the derived file was created.
2. Use \n to separate lines.
3. This must be empty for compatibility with older versions of Leo.
4. Please use an empty comment when updating to CVS!</t>
<t tx="ekr.20041119034357.9">@language rest

If present, say::
    
    @string stylesheet = x
    
The .leo file will contain the following line::

  &lt;?xml-stylesheet x ?&gt;

**Note**: x should contain any needed XML escapes.

**Note**: if x is empty, Leo will retain any xml-stylesheet line in the .leo file.
</t>
<t tx="ekr.20041119035137">@language rest
@wrap
@pagewidth 80

This is Leo's main settings file.  It specifies settings used to customize Leo.

@settings trees are composed of various kinds of nodes.

The headline of each node indicates its type.

The body text of most nodes contain comments. However, the body text of @data, @font and @shortcuts nodes contain settings. See the children of this node for details.
</t>
<t tx="ekr.20041119035704">These nodes describe the type, name and value of a single setting. Their
headlines have the form::

    @type-name setting-name = value

The basic types are: @bool, @color, @directory, @encoding, @font, @int, @path,
and @string.

None is a valid value for all types, indicating that the setting node has no
effect.
</t>
<t tx="ekr.20041119035704.1">Organizer nodes have headlines that do **not** start with @.

Organizer nodes may be inserted freely without changing the meaning of an @setting tree.</t>
<t tx="ekr.20041119035704.2">Leo ignores subtrees of @settings trees whose headline starts with @ignore.</t>
<t tx="ekr.20041119035704.3">Not implemented yet.

Creates a user-defined type. For example:

@type relief: string = [raised, sunken, flat, ridge, solid, groove]

This is much better than using a base type because the dialog creator can
present the user with a listbox containing only the valid options.</t>
<t tx="ekr.20041119041019">False: Print sends its output to stdout (console) when doing Execute Script command.
True:  Print redirected to Leo's log pane when doing Execute Script command.
</t>
<t tx="ekr.20041119041019.1">The string to be appended to file names resulting from the Remove Sentinels command.
If the value starts with . the extension is appended to the original file name.
Otherwise, the extension is appended before the file extension.
Example 1:
  File name x.y
  remove_sentinels_extension = _ns
  Result: x_ns.y
Example 2:
  File name x.y
  remove_sentinels_extension = .txt
  Result: x.y.txt

</t>
<t tx="ekr.20041119041019.2">True:  The Save command clears undo buffer.
False: The undo buffer persists across saves.</t>
<t tx="ekr.20041119041304">This option applies to directories specified in filenames in all kinds of @file trees, and to filenames specified in the @path directive.

True:  Leo attempts to create directories if they do not exist.
False: Leo never attempts to create directories.</t>
<t tx="ekr.20041119041304.1">This option specifies the directory to be used as a prefix for &lt;filename&gt; in

@path &lt;filename&gt;
@file &lt;filename&gt;
@root &lt;filename&gt;

when &lt;filename&gt; is a relative path.

Valid values for this option:

'!' means relative to the location leo.py (recommended).
'.' means relative to the location of the .leo file in the top window.

An absolute path (in platform-dependent format).

Relative paths are not allowed because their meaning would depend on the changing value of the current working directory.</t>
<t tx="ekr.20041119041747">nl or lf: (recommended) All lines end with "\n"
cr:       All lines end with "\r"
crlf:     All lines end with "\r\n"
platform: Lines end in platform-specific way.

With platform Leo opens output files in "w" mode rather than "wb" mode and writes '\n'

Please specify nl when uploading files to Leo's CVS site.</t>
<t tx="ekr.20041119041747.1">The number of trailing newlines Leo retains at the end of each body text.

asis: Leo retains the number of newlines contained in each body text.
      
    Warning: Leo sometimes has problems determining which ending newlines are "real".

zero: Leo removes all trailing whitespace from body text.

one:  Leo ends each non-empty body text with exactly one trailing newline.</t>
<t tx="ekr.20041119041747.4">
True:  Leo strips blanks and tabs from otherwise blank lines.
False: Leo retains whitespace even in otherwise blank lines.</t>
<t tx="ekr.20041119042929"></t>
<t tx="ekr.20041119042929.1">Value must be Qt color name or value, such as 'red' or 'xf2fddff' (without the quotes).

Unlike in @data qt-gui-plugin-style-sheet, @values are not allowed as color values.</t>
<t tx="ekr.20041119042929.10">The encoding specified in the following line of new .leo files:

&lt;?xml version="1.0" encoding="UTF-8"&gt;

The recommended value is UTF-8 (upper case for compatibility for old versions of Leo).

iso-8859-1 would be a popular alternative.

Important: Once a .leo file is created the &lt;?xml..."&gt; line can only be changed by hand.  Alas, changing the &lt;?xml..."&gt; line by hand may cause unicode errors the next time the .leo file is loaded.  Therefore, you should change the &lt;?xml..."&gt; line by hand only when first creating a .leo file.</t>
<t tx="ekr.20041119042929.2">Same as @directory.</t>
<t tx="ekr.20041119042929.3"></t>
<t tx="ekr.20041119042929.4"></t>
<t tx="ekr.20041119042929.7"></t>
<t tx="ekr.20041119042929.9">The encoding used for derived files if no @encoding directive is in effect.
This setting is also used to encode files created by the Tangle commands.
Default is UTF-8 (case not important).</t>
<t tx="ekr.20041119043902">The path to the first file or directory to be compared.

Directory compares ignore a filename part of the path, if present.

E.g., c:/directory2/spam.py is valid for directory compares</t>
<t tx="ekr.20041119043902.1">The path to the second file or directory to be compared.

Directory compares ignore a filename part of the path, if present.

E.g., c:/directory2/spam.py is valid for directory compares</t>
<t tx="ekr.20041119043902.10">0: Show lines regardless of the number of mismatches.

n: Stop showing lines after n mismatches.

</t>
<t tx="ekr.20041119043902.11">
1: Show blanks as [ ] and tabs as [t]

</t>
<t tx="ekr.20041119043902.12">True:  Print lines of both files when showing matching lines.

False: Print only the line of compare_file_1 when showing matching lines.

</t>
<t tx="ekr.20041119043902.13">True: Print lines that match using the print_both_lines_for_matches option.

</t>
<t tx="ekr.20041119043902.14">True: Print lines that do not compare equal to each other.

</t>
<t tx="ekr.20041119043902.15">True: Print lines all lines in one file after an end-of-file is seen on the other file.</t>
<t tx="ekr.20041119043902.2">The path to the output file.

Leo will silently write to this file, regardless of whether it already exists, creating the file if needed.

Leo will write to the log pane if this path is empty or invalid.</t>
<t tx="ekr.20041119043902.3">True:  Append output to output file.

False: Replace output file with results of compare.</t>
<t tx="ekr.20041119043902.4">True: Ignore blanks lines when comparing files.

</t>
<t tx="ekr.20041119043902.5">True: Ignore the first line of compare_file_1 when comparing files.

</t>
<t tx="ekr.20041119043902.6">True: Ignore the first line of compare_file_2 when comparing files.</t>
<t tx="ekr.20041119043902.7">True: Ignore whitespace after the leading whitespace of a line when comparing files.</t>
<t tx="ekr.20041119043902.8">True:  Ignore leading whitespace of each line when comparing files.

False: The recommended setting when comparing Python source files.

</t>
<t tx="ekr.20041119043902.9">True: Ignore sentinel lines when comparing files.

Leo sets sentinel comment delimiters from the first line of each file.  This option has no effect if the first line is not a @+leo line.</t>
<t tx="ekr.20041119044139"></t>
<t tx="ekr.20041119050105">These options affecting how Leo shows the results of file compares.

Leo gathers statistics regardless of these options.</t>
<t tx="ekr.20041119050105.1">The change string (without the quotes unless quotes are part of the string).

N.B. Leo requires utf-8 encoding for any non-ascii characters.</t>
<t tx="ekr.20041119050105.10"></t>
<t tx="ekr.20041119050105.11"></t>
<t tx="ekr.20041119050105.12"></t>
<t tx="ekr.20041119050105.14">When checked, the Find and Change commands search body text.
</t>
<t tx="ekr.20041119050105.15">When checked, the Find and Change commands search headline text.
</t>
<t tx="ekr.20041119050105.16">When checked, the Find and Change commands search only the currently selected headline and its offspring.
</t>
<t tx="ekr.20041119050105.2">The find string (without the quotes unless quotes are part of the string).

N.B. Leo requires utf-8 encoding for any non-ascii characters.

</t>
<t tx="ekr.20041119050105.3">These settings determine whether the corresponding checkbox is checked by default.</t>
<t tx="ekr.20041119050105.4">Despite its name, this setting affects the default value of the Show Context checkbox.</t>
<t tx="ekr.20041119050105.5">When checked, the Find and Change commands ignore the case of alphabetic characters when determining matches.
</t>
<t tx="ekr.20041119050105.6">When checked, the Change command marks all headlines whose headline or body text are changed by the command.
</t>
<t tx="ekr.20041119050105.7">When checked, the Find and Change commands mark all headlines in which a match is found with the pattern.
</t>
<t tx="ekr.20041119050105.8">When checked, the Find and Change commands treat several characters specially in
the find pattern. The '*' character matches any sequence of zero or more
characters. The '.' character matches any single character. The '^' character at
the start of a pattern, or a '$' character at the end of a pattern matches a
newline.

Examples:

The pattern "^abc$" matches lines that only contain "abc".
The pattern "^a" matches any line starting with "A".
The pattern "a$" matches any line ending with "a".
The pattern "^*$" matches any line at all.</t>
<t tx="ekr.20041119050105.9"></t>
<t tx="ekr.20041119050749.10">The format string used when creating the Time/Date string for the Insert Time/Date command.

See the Python documentation for time.strftime for full details.

Examples:
1/30
%m/%d

1/30/03 8:31:02
%m/%d/%y %H:%M:%S

Thu, 30 Jan 2003 16:57:12
%a, %d %b %Y %H:%M:%S
</t>
<t tx="ekr.20041119050749.11">True:  use gmt time when inserting time into headlines.

False: use local time.</t>
<t tx="ekr.20041119050749.4">True:  Tell whether drags will move nodes or clone nodes.
False: Don't issue such messages.

</t>
<t tx="ekr.20041119052015">Color for error messages written to the log window.</t>
<t tx="ekr.20041119052015.1">True: Wrap log text.

</t>
<t tx="ekr.20041119052015.2">Foreground color of log text.

</t>
<t tx="ekr.20041119053445">Background color of log text.</t>
<t tx="ekr.20041119105509">**Not implemented**.

Creates a permanent value that can be tested later with @if. That is, it alters
the environment in which @if code is executed.</t>
<t tx="ekr.20041119110141">Enable descendant settings if sys.platform is the given platform name or names.

Typical platform names are darwin, linux2, win32.

Case is ignored in platform names.

Examples:

@ifplatform darwwin, linux2
    Enables descendant settings for MacOs or Linux
    
@ifplatform win32
    Enables descendant settings for Windows
    
</t>
<t tx="ekr.20041120152657"></t>
<t tx="ekr.20041120152900.2">When the Script Search radio button is selected Leo treats the contents of the
Search Text as a script to execute whenever any kind of Find command is
executed. Similarly, when the Script Change checkbox is selected Leo treats the
context of the Change Text as a script to execute whenever any kind of Change
command is executed. See below for just how this works.

Script-based find-change is extremely powerful. In effect, Leo's Find/Change
panel becomes a new platform for running scripts interactively. Leo now has all
the find/change capability of pattern matching languages like Snobol and Icon,
just by using the capabilities of the plain Python language. Moreover, Leo can
deliver these capabilities interactively or not depending which buttons you push
in Leo's Find/Change panel.

Script-based find/change frees the user from having to control script-based
searches interactively. Rather than forcing find/change scripts to implement
their own interactive controls, it is much easier to use what Leo already has.

HOW IT WORKS

Leo dedicates a Python dictionary called app.searchDict for communication
between Leo and the search and change scripts. The search and change scripts may
also use app.searchDict for communication between themselves. Leo sets
app.searchDict["type"] to "find", "change", "findAll" or "changeAll" to indicate
the kind of command being executed. Scripts may use all other entries in
app.searchDict as they please.

Leo executes the find script once when you press the Find button (or the Change
then Find button) in Leo's Find/Change dialog. Typically, the find script would
traversing the tree and highlight the found text or otherwise indicate to the
user that the find operation has succeeded. However, the script can do anything
it pleases.

Leo executes the the find script repeatedly when you press the Find All button.
Leo keeps executing the find script until app.searchDict["continue"] evaluates
to false. Initially there is no entry for app.searchDict["continue"], so the
find script must set app.searchDict["continue"] = true if it wants Leo to keep
executing it.

Leo executes the change script once when you press the Change button. Typically,
the change script would change the selected text. Usually the change script will
compute the new value of body text and call v.setBodyStringOrPane(newText) to
make that change permanent. 

The change script also may handle undo, typically by calling
c.frame.onBodyChanged(v,"Change",oldText=oldText). Leo does not handle undo
automatically. Indeed, Leo makes no assumptions whatever about what the change
script really does.

Leo executes the the change script repeatedly when you press the Change All
button. Just as with the Find All command, Leo keeps executing the change script
until app.searchDict["continue"] evaluates to false.

Most find and change scripts will ignore settings in the Find Panel like "whole
word", "pattern match", and "reverse". However, these settings are available to
the scripts via ivars such as c.whole_word_flag, etc. if desired.

For examples, see the node called 'Script Find and Script Change' in leoDocs.leo.</t>
<t tx="ekr.20041120155431.1">The body text of @shortcut nodes contain the specification for zero or more shortcuts.

Lines starting with # are ignored.

All other non-blank lines should have the form:

commandName = shortcut specifier.

**Note**: not all bindings are possible on MacOS, especially Ctrl-H and Ctrl-period.</t>
<t tx="ekr.20041120155431.2">Not implemented yet.

Autments the settings parser and the dialog creator with scripts.</t>
<t tx="ekr.20041120181045">A float value restricted to the range 0.0 to 1.0.</t>
<t tx="ekr.20041122163623">When looking for @whatever, Leo converts whatever to lower case and removes
minus signs. For example, the following are equivalent::

    @if-platform
    @ifPlatform
    @ifplatform
</t>
<t tx="ekr.20041213105007.2"></t>
<t tx="ekr.20041213105007.3"></t>
<t tx="ekr.20041213105954">Options that require pixel values can be any Python expression that yields an int.
Warning: the number of pixels per inch varies...</t>
<t tx="ekr.20041213105954.1"></t>
<t tx="ekr.20041213105954.2"></t>
<t tx="ekr.20041217184352.2">LightYellow1

#f2fdff</t>
<t tx="ekr.20050126083026">node granularity: start a new undo unit when typing moves to a new node.
line granularity: start a new undo unit when typing moves to new line.
word granularity: start a new undo unit when typing starts a new word.
char granularity: start a new undo unit for each character typed.

'line' granularity is the default used if no valid setting is specified.

Leo used char granularity for all version prior to 4.3. char granularity is not
recommended; it is clumsy and wasteful of computer memory.</t>
<t tx="ekr.20050203085250">This is not used in Leo, except in unit tests.

Please do not change this; it would make a unit test fail.</t>
<t tx="ekr.20050203090810">Please do not change any of these settings.

Doing so would make unit tests fail.
</t>
<t tx="ekr.20051007200824">This node contains sets of key bindings and settings.

These sets should have headlines starting with @keys so that the Check Bindings
script can find them.

- The *inactive* sets should be children of the node '@ignore Unused key bindings'

- The *active* set should be *outside* of the @ignore and its descendants.
</t>
<t tx="ekr.20051007200824.1">The following special single characters may be used in the tails of shortcuts.
They are listed along with their associated Tk binding value. Leo contains
special code to handle these characters. No other single characters may be
specified.

For example, you could specify Ctrl+! as a shortcut, and Leo will create a
binding for &lt;Control+exclam&gt;. Some of these values may be invalid on some
machines.

The full list is at http://tcl.activestate.com/man/tcl8.4/TkCmd/keysyms.htm

! exclam
" quotedbl
# numbersign
$ dollar
% percent
&amp; ampersand
' quoteright
( parenleft
) parenright
* asterisk
+ plus
, comma
- minus
. period
/ slash
: colon
; semicolon
&lt; less
= equal
&gt; greater
? question
@ at
[ bracketleft
\ backslash
] bracketright
^ asciicircum
_ underscore
` quoteleft
{ braceleft
| bar
} braceright
~ asciitilde

Leo recognizes the following mult-character names, and translates the indicated
strings in the menu items:
    
"bksp"     : "BkSp"
"dnarrow"  : "DnArrow"
"ltarrow"  : "LtArrow"
"rtarrow"  : "RtArrow"
"uparrow"  : "UpArrow"
"pageup"   : "PgUp"),
"pagedn"   : "PgDn")

For example, "Ctrl-uparrow"  will appear as "Ctrl+UpArrow" in the menu.

Leo passes all other mult-character names verbatim to Qt, so on some platforms
you may be able to use any of the following. Most appear on the numeric keypad.
For example, the following may work on some systems:
    
"Ctrl+BackSpace"

Don't use these if you want to be sure that the binding work on all platforms.
The complete list of names may be found at:
http://tcl.activestate.com/man/tcl8.4/TkCmd/keysyms.htm.
    
F1, F2, F3, F4, F5, F6, F7, F8, F9, F10,
BackSpace, Break, Clear, Delete, Escape, Linefeed, Return, Tab, 
Down, Left, Right, Up,
Begin, End, Home, Next, Prior,
Num_Lock, Pause, Scroll_Lock, Sys_Req,
KP_Add, KP_Decimal, KP_Divide, KP_Enter, KP_Equal,
KP_Multiply, KP_Separator, KP_Space, KP_Subtract, KP_Tab,
KP_F1, KP_F2, KP_F3, KP_F4,
KP_0, KP_1, KP_2, KP_3, KP_4, KP_5, KP_6, KP_7, KP_8, KP_9</t>
<t tx="ekr.20051020125928">#d6c7d3
#d2cad0
#c6d3d7</t>
<t tx="ekr.20051025070845">#d6c7d3
#d2cad0
#c6d3d7
#ffffec # Same as outline.</t>
<t tx="ekr.20051025084017">Leo's spell checker requires PyEnchant to be installed.
See: http://pythonhosted.org/pyenchant/tutorial.html#installing-pyenchant
</t>
<t tx="ekr.20051027175030">True: When typing an opening bracket '(','[' or '{', immediately type the
corresponding closing bracket.  To move past the closing bracket, just type it.</t>
<t tx="ekr.20051101160257">A shortcut specification has the form:

command-name = shortcutSpecifier

or

command-name ! pane = shortcutSpecifier

The first form creates a binding for all panes except the minibuffer. The second
form creates a binding for one or more panes. The possible values for 'pane'
are:

pane    bound panes
----    -----------
all     body,log,tree
body    body
log     log
mini    minibuffer
text    body,log
tree    tree
    
You may use None as the specifier. Otherwise, a shortcut specifier consists of a
head followed by a tail. The head may be empty, or may be a concatenation of the
following: (All entries in each row are equivalent).
    
Shift+ Shift-
Alt+ or Alt-
Control+, Control-, Ctrl+ or Ctrl-

Notes:

1. The case of plain letters is significant:  a is not A.

2. The Shift- (or Shift+) prefix can be applied *only* to letters or multi-letter tails. Leo will ignore (with a warning) the shift prefix applied to other single letters, e.g., Ctrl-Shift-(

3. The case of letters prefixed by Ctrl-, Alt-, Key- or Shift- is *not* significant.

The following table illustrates these rules.  In each row, the first entry is the key (for k.bindingsDict) and the other entries are equivalents that the user may specify in leoSettings.leo:

a, Key-a, Key-A
A, Shift-A
Alt-a, Alt-A
Alt-A, Alt-Shift-a, Alt-Shift-A
Ctrl-a, Ctrl-A
Ctrl-A, Ctrl-Shift-a, Ctrl-Shift-A
!, Key-!,Key-exclam,exclam
    
See "About shortcut specifiers" for a full discussion of what may appear in the tail of a shortcut.</t>
<t tx="ekr.20051123100536">Note: These settings have effect only if the corresponding plugin has been enabled.</t>
<t tx="ekr.20051123100536.1">For MacOS X (darwin) the following are typical defaults:

vim_cmd = /Applications/gvim.app/Contents/MacOS/gvim --servername LEO
vim_exe = /Applications/gvim.app/Contents/MacOS/gvim
</t>
<t tx="ekr.20051123100536.2"></t>
<t tx="ekr.20051123100536.3"></t>
<t tx="ekr.20051126062243"></t>
<t tx="ekr.20060112103537.17">'''Check for commands that exist in some but not all key- binding sets.'''
g.cls()
import leo.core.leoConfig as leoConfig
# import leo.core.leoTest as leoTest
parser = leoConfig.SettingsTreeParser(c)
# Add these as required to handle commands defined by plugins.
optionalCommandPrefixes = ['group-operations']
optionalCommandNames = [
    # These are the command names as defined by plugins.
    # LeoSlideShows.leo defines buttons whose commands do not end in '-command'.
    'next-slide-command','next-slide-show-command',
    'prev-slide-command','prev-slide-show-command',
    # The ipython plugin.
    'start-ipython','get-ipython-results','push-to-ipython',
    # The viewrendered plugin.
    'vr-toggle',
]
setNames = []
setsDict = {} # keys are set names, values are dicts of command names.
shortcutsDict = {}
@others
main()
</t>
<t tx="ekr.20060112104119">def defineSetNames():
    global setNames
    if 1:
        setNames = []
        for p in c.allNodes_iter():
            h = p.headString()
            if h.startswith('@keys'):
                h = h[5:].strip()
                if h not in setNames:
                    setNames.append(h)
        g.es('Found these sets...')
        for setName in setNames:
            g.es_print('  %s' % str(setName))
    else:
        setNames = [
            'Default Emacs shortcuts',
            'Legacy Leo bindings',
            'Legacy Leo shortcuts with important Emacs bindings',
            'No bindings',
            'EKR bindings: a mix',
            'EKR bindings: Mode-oriented',
        ]

    setNames.sort()
</t>
<t tx="ekr.20060112104333">def doSet(p,name):

    global shortcutsDict

    shortcutsDict = {}

    for p in p.subtree_iter():
        if p.headString().startswith('@shortcuts'):
            doShortcuts(p,name)
</t>
<t tx="ekr.20060112104333.1">def checkSets():

    global setNames, optionalCommandPrefixes, optionalCommandNames
    # Compute the union of all the command names.
    allNames = {}
    for setName in setNames:
        d = setsDict.get(setName)
        if d:
            for key in d.keys():
                allNames[key] = key
        else:
            g.es_print('No setsDict for %s' % (repr(setName)),color='red')
    keys = sorted(allNames.keys())
    # Warn about missing names.
    for setName in ('No bindings',): # setNames:
        d = setsDict.get(setName)
        if d:
            for key in keys:
                if key not in ('none','None',None) and key not in d.keys():
                    # Don't warn about missing 'enter-xxx-mode' commands.
                    if (
                        not (key.startswith('enter-') and key.endswith('-mode')) and
                        not (key.startswith('press-') and key.endswith('-button'))
                    ):
                        g.es_print('%s is missing %-35s = None' % (setName,repr(key)))
        else:
            g.es_print("'@keys No bindings' not found",color='blue')
    # Warn about undefined commands.
    for key in keys:
        if not c.commandsDict.get(key):
            ok = False
            # full-command and quick command are weird special cases.
            if key not in ('None',None,'full-command','quick-command'):
                # Don't warn about missing 'enter-xxx-mode' commands.
                if key.startswith('enter-') and key.endswith('-mode'):
                    ok = True
                elif key.startswith('press-') and key.endswith('-button'):
                    ok = True
                for prefix in optionalCommandPrefixes:
                    if key.startswith(prefix):
                        ok = True
                for optionalCommand in optionalCommandNames:
                    if key == optionalCommand:
                        ok = True
                if not ok:
                    g.es_print('Undefined command name: %s' % (key))
</t>
<t tx="ekr.20060112104823">def main ():

    global setNames
    defineSetNames()

    g.es_print('-' * 40)
    seen = {}
    for p in c.allNodes_iter():
        h = p.headString()
        if h.startswith('@keys'):
            h = h[5:].strip()
            if not seen.get(h):
                seen[h] = True
                doSet(p,h)
    checkSets()
    g.es('Check Bindings done')
</t>
<t tx="ekr.20060112105523">def doShortcuts(p,setName):

    global parser,setsDict,shortcutsDict

    d = setsDict.get(setName,{})
    s = p.bodyString()
    lines = g.splitLines(s)
    for line in lines:
        line = line.strip()
        if line and not line.startswith('#'):
            commandName,si = parser.parseShortcutLine('test',line)
            if not si:
                g.es_print('In %s:\nmissing "=" in shortcut line:%s' % (
                    p.headString(),repr(line)),color='red')
            else:
                # Having multiple shortcuts for a command if fine,
                # But having multiple commands for a shortcut is not.
                shortcut = si.stroke
                pane = si.pane
                if shortcut not in (None,'None','none'):
                    aList = shortcutsDict.get(shortcut,[])
                    if aList:
                        for commandName2,pane2 in aList:
                            if pane == pane2:
                                g.es_print('duplicate shortcut %s in set %s: previous command: %s' % (
                                    shortcut,setName,commandName2),color='red')
                        else:
                            aList.append((commandName,pane),)
                    else:
                        shortcutsDict [shortcut] = [(commandName,pane),]

                data = d.get(commandName)
                if data:
                    shortcut2,pane2 = data
                    if shortcut == shortcut2 and pane == pane2:
                        g.es_print('duplicate %s in set %s' % (
                            commandName,setName),color='red')
                else:
                    data = shortcut,pane
                    d[commandName] = data

    setsDict[setName] = d
</t>
<t tx="ekr.20060112110750"></t>
<t tx="ekr.20060116090646">@nocolor

Standard keys (Windows defaults in parens)

F1 help
Windows key + F1 Windows Help
F2 find-prev (Rename)
F3 find-next (Find Files)
F4 None (Address bar in Windows Explorer)
F5 None (Refresh, Reload in Windows Explorer)
F6 None (Should cycle from window to window)
F7 spell-tab-open (Spell in Word)
Shift-F7 None (Thesaurus in Word)
F8 None (Safe mode)
F9 None
F10 None (Activate menu bar in many programs)
F11 None (Toggle full screen mode in explorer)
F12 None

You can use F10 to highlight the first menu choice, and then use the arrow keys to move around the menus. Pressing the Shift key while pressing F10 will bring up the shortcut menu. This is similar to right-clicking on an object.</t>
<t tx="ekr.20060117092249">A mode is a temporary set of key bindings. Modes are created by nodes whose
headline has the form:

@mode &lt;mode name&gt;

The body text contains a list of shortcut specifiers. @mode nodes work just like
@shortcuts, but as a side effect they create the enter-&lt;mode name&gt;-mode
command.  For example, 

@mode quick-commands

creates the enter-quick-commands command. You can bind keys to such commands in
@shortcuts nodes as usual.

Notes:

- If the @mode headline contains ::, everything following the :: is the
  mode prompt. For example::
    
    @mode abc :: xyz
    
creates the enter-abc-mode command, but the prompt for the command is xyz.

- Pane specifiers are ignored in @mode nodes. Bindings apply only to a single
mode.

- @shortcuts nodes specify the bindings in effect for the 'default' or
'top-level' mode. The keyboard-quit command always set the mode to the top-level
mode.

- The top_level_unbound_key_action setting determines what happens to unbound
keys *only* for the top-level mode.

- A mode contains *only* the key bindings explicitly specified in the @mode
node. The only default key binding is the binding for the keyboard-quit command
(usually Control-g). Thus, all modes except the top-level mode act as if
top_level_unbound_key_action = 'ignore'. In particular, the set-command-state,
set-insert-state and set-overwrite-state commands affect only the top-level mode.

- The mode-help command (recommend binding is Tab) lists all bound keystrokes in
a mode.

- ** New in 4.4.1: In @mode nodes, shortcut specifier lines of the form::

    --&gt; command-name
    
Specify that the named command will be executed before entering the mode. More
than one such **mode-entry commands may appear.

- In @mode nodes, shortcut specifier lines of the form:

    command-name -&gt; mode-name = binding

specify that Leo will enter the named mode after executing the command. As a
special case,

    command-name -&gt; same = binding

will cause the command to be executed without changing mode.</t>
<t tx="ekr.20060122105527.3"></t>
<t tx="ekr.20060122105527.7">True: (Recommended) Selecting an outline node leaves the focus in the outline pane.

If this is False it will be harder to use the arrow keys in the headline.
    
False: (Legacy) Selecting an outline node transfers focus to the body pane.</t>
<t tx="ekr.20060122105527.8"></t>
<t tx="ekr.20060125104049">True: (recommended) The Find tab shows only options, not text or buttons.
False: (legacy)     The Find tab shows text, options and buttons.</t>
<t tx="ekr.20060127050605">Zero (recommended): unlimited stack size.
Non-zero: limit the maximum stack size to the given number.</t>
<t tx="ekr.20060201111002"></t>
<t tx="ekr.20060204124608">True: minibuffer commands show the Find Tab.
False: minibuffer commands hide the Find Tab.

Important: the Find Tab always exists regardless of this setting.</t>
<t tx="ekr.20060216135834">True:  enable autocompletion initially.
False: disable autocomopletion initially.

You can use the enable-autocompleter and disable-autocompleter
commands to enable or disable autocompletion at any time.

Note: The 'initially' prefix is needed to distinguish this setting from
enable-autocompleter command. Otherwised they would get 'munged' to the same
configuration value.</t>
<t tx="ekr.20060216170801"></t>
<t tx="ekr.20060303075452">The following commands are useful for operating Leo without a mouse.

Clicks

click-headline
click-icon-box
double-click-headline
double-click-icon-box

Cursor moves and selection (Basic Emacs commands)

back-char
back-char-extend-selection
back-paragraph
back-paragraph-extend-selection
back-sentence
back-sentence-extend-selection
back-to-indentation
back-word
back-word-extend-selection
backward-delete-char
backward-kill-paragraph
backward-kill-sentence
backward-kill-word
beginning-of-buffer
beginning-of-buffer-extend-selection
beginning-of-line
beginning-of-line-extend-selection
delete-char
end-of-buffer
end-of-buffer-extend-selection
end-of-line
end-of-line-extend-selection
exchange-point-mark
forward-char
forward-char-extend-selection
forward-paragraph
forward-paragraph-extend-selection
forward-sentence
forward-sentence-extend-selection
forward-word
forward-word-extend-selection
insert-newline
kill-line
kill-to-end-of-line
kill-paragraph
kill-region
kill-region-save
kill-sentence
kill-word
move-past-close
move-past-close-extend-selection
newline-and-indent 
next-line
next-line-extend-selection
paste-text
previous-line
previous-line-extend-selection
rectangle-kill
scroll-down-half-page
scroll-down-line
scroll-down-page
scroll-up-line
scroll-up-page
yank
yank-pop  
zap-to-character

Focus

abort-edit-headline
cycle-focus
edit-headline
end-edit-headline
focus-to-body
focus-to-find
focus-to-log
focus-to-minibuffer
focus-to-tree
spell-tab-open

Menus

activate-cmds-menu
activate-edit-menu
activate-file-menu
activate-help-menu
activate-outline-menu
activate-plugins-menu
activate-window-menu

Nodes: selecting, expanding and contracting

contract-all
contract-node
contract-or-go-left
contract-parent
equal-sized-panes
expand-all
expand-and-go-right
expand-next-level
expand-node
expand-or-go-right
expand-prev-level
go-back
go-forward
goto-char
goto-first-node
goto-first-sibling
goto-first-visible-node
goto-last-node
goto-last-sibling
goto-last-visible-node
goto-next-node
goto-next-sibling
goto-next-visible
goto-parent
goto-prev-node
goto-prev-sibling
goto-prev-visible

Panes

contract-body-pane
contract-log-pane
contract-outline-pane
contract-pane
expand-body-pane
expand-log-pane
expand-outline-pane
expand-pane
find-tab-hide
fully-expand-body-pane
fully-expand-log-pane
fully-expand-outline-pane
fully-expand-pane
hide-body-pane
hide-log-pane
hide-pane
hide-outline-pane
spell-tab-hide

Furthermore, the find commands are a good tool for using Leo without a mouse
(More commands are coming)

replace
replace-all
replace-then-find
find-next
find-all
find-prev
isearch-backward
isearch-backward-regexp
isearch-forward
isearch-forward-regexp
find-tab-open
replace-string
search-again
search-backward
search-forward
set-replace-string

Setting find options:

enter-find-options-mode
set-find-everywhere
set-find-node-only
set-find-suboutline-only
show-find-options
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-word-option
toggle-find-wrap-around-option
word-search-backward
word-search-forward</t>
<t tx="ekr.20060323131801">True: warn if a command has no setting.</t>
<t tx="ekr.20060325071042"></t>
<t tx="ekr.20060325071042.1"></t>
<t tx="ekr.20060325071042.2"></t>
<t tx="ekr.20060325071042.3"></t>
<t tx="ekr.20060325071916"></t>
<t tx="ekr.20060408090018"></t>
<t tx="ekr.20060504131831.1"></t>
<t tx="ekr.20060504131831.2"></t>
<t tx="ekr.20060504134056"></t>
<t tx="ekr.20060504134056.1"></t>
<t tx="ekr.20060504134056.2"></t>
<t tx="ekr.20060504140351"></t>
<t tx="ekr.20060504140408"></t>
<t tx="ekr.20060504140408.1"></t>
<t tx="ekr.20060504140408.2"></t>
<t tx="ekr.20060521132401">c:\Python24\Scripts\_winpdb.py</t>
<t tx="ekr.20060521134125">The debug target to use if no target is specified otherwise.

c:\prog\tigris-cvs\leo\src\leo.py
</t>
<t tx="ekr.20060521134125.1">The debug target to use regardless of the selected node or other settings.</t>
<t tx="ekr.20060524151415"></t>
<t tx="ekr.20060524151415.1">idle: use Python's standard Idle debugger.

winpdb: (recommended) use winpdb debugger.

To use winpdb you must download and install winpdb from:
http://www.digitalpeers.com/pythondebugger/

There is no special support for Idle, so you may as well open Idle using Leo's
open-python-window command.</t>
<t tx="ekr.20060531094310">True:  auto-indent regardless of how text is colored.
False: suppress auto-indenting if in range @nocolor or @kill.</t>
<t tx="ekr.20060603070801">True:  enable calltip expansion initially.
False: disable calltip expansion initially.

You can use the enable-calltips and disable-calltips
commands to enable or disable autocompletion at any time.

Note: The 'initially' prefix is needed to distinguish this setting from
enable-calltips command. Otherwised they would get 'munged' to the same
configuration value.</t>
<t tx="ekr.20060603215208">These bindings are a mixture of emacs bindings, windows bindings and vim bindings.</t>
<t tx="ekr.20060603215208.19"># Quick finds
backward-find-character                     = Alt-Q
backward-find-character-extend-selection    = Alt-Shift-Q
find-character                              = None ### = Alt-P
find-character-extend-selection             = None ### = Alt-Shift-P

# To start finds and changes...
start-search                        = Ctrl-f
set-replace-string                  = None # Ctrl-Shift-r
find-tab-hide                       = None
find-tab-open                       = None

clone-find-all                      = None
isearch-backward                    = Alt-R
isearch-backward-regexp             = None
isearch-forward                     = Alt-I # Alt-S conflicts with &amp;Search and &amp;Settings menus.
isearch-forward-regexp              = None
search-backward                     = None
search-forward                      = None
search-return-to-origin             = None
word-search-backward                = None 
word-search-forward                 = None

# To coninue finds and changes...
find-next                           = F3
find-all                            = None
find-prev                           = F2
replace                              = Ctrl-=
replace-all                         = None  # Not recommended to bind this to a shortcut.
replace-then-find                   = Ctrl--

set-find-everywhere                 = Alt-Ctrl-e
set-find-node-only                  = Alt-Ctrl-n
set-find-suboutline-only            = Alt-Ctrl-s
toggle-find-ignore-case-option      = Alt-Ctrl-i
toggle-find-in-body-option          = Alt-Ctrl-b
toggle-find-in-headline-option      = Alt-Ctrl-h
toggle-find-mark-changes-option     = Alt-Ctrl-c
toggle-find-mark-finds-option       = Alt-Ctrl-f
toggle-find-regex-option            = Alt-Ctrl-x
toggle-find-word-option             = Alt-Ctrl-w
toggle-find-wrap-around-option      = Alt-Ctrl-a

search-return-to-origin             = Alt+F3</t>
<t tx="ekr.20060603215208.20">full-command            = Alt-x
# negative-argument     = None      # Alt-minus conflicts with contract-all.
repeat-complex-command  = Ctrl-P
# universal-argument    = Alt-u   # Usually Ctrl-u, conflicts with move-outline-up.



</t>
<t tx="ekr.20060605081712">Recommended:
    
white                   if top_level_unbound_key_action is command
a color like MistyRose1 if top_level_unbound_key_action is insert or overwrite.

#f2fdff</t>
<t tx="ekr.20060605081712.3">Overrides body_text_foreground_color.</t>
<t tx="ekr.20060606085536">Overrides body_text_background_color.

wheat1
PeachPuff1
LemonChiffon1
cornsilk1
honeydew1
LavenderBlush1
azure2
aquamarine1</t>
<t tx="ekr.20060606085536.1">Overrides body_text_foreground_color.</t>
<t tx="ekr.20060620085654">vertical:   pack body-pane editors vertically.
horizontal: pack body-pane editors horizontally.</t>
<t tx="ekr.20060627084739">True: flash matching bracket when typing (, ), [, ], { or }.</t>
<t tx="ekr.20060627121646"></t>
<t tx="ekr.20060627121646.1"></t>
<t tx="ekr.20060627121646.2">The number of times to flash matching brackets.</t>
<t tx="ekr.20060627121646.3">One half the total cycle time of bracket flashes, in milliseconds.</t>
<t tx="ekr.20060704090341"></t>
<t tx="ekr.20060713101831"># Support for solozized colors requires black.</t>
<t tx="ekr.20060730101451"></t>
<t tx="ekr.20060730101451.3"></t>
<t tx="ekr.20060730101451.5"></t>
<t tx="ekr.20060804095015">Important: the order the open_flash_brackets and close_flash_brackets settings must be consistent.</t>
<t tx="ekr.20060804095015.1">Important: the order the open_flash_brackets and close_flash_brackets settings must be consistent.</t>
<t tx="ekr.20060807103220"></t>
<t tx="ekr.20060807103220.1">This is the body text of a single day node.</t>
<t tx="ekr.20060807103220.10">True: Omit saturdays if a whole year is inserted</t>
<t tx="ekr.20060807103220.11">True: Omit sundays if a whole year is inserted</t>
<t tx="ekr.20060807103220.2">This is the format of the headline if a single day node is inserted.</t>
<t tx="ekr.20060807103220.3">This is the format of day node headline if a whole month is inserted.</t>
<t tx="ekr.20060807103220.4">This is the format of the month node headline if a whole month is inserted.</t>
<t tx="ekr.20060807103220.5">True: Omit saturdays if a whole month is inserted.</t>
<t tx="ekr.20060807103220.6">True: Omit sundays if a whole month is inserted.</t>
<t tx="ekr.20060807103220.7">This is the format of the day node headline if a whole year is inserted.</t>
<t tx="ekr.20060807103220.8">This is the format of the month node headline if a whole year is inserted.</t>
<t tx="ekr.20060807103220.9">This is the format of the year node headline if a whole year is inserted.</t>
<t tx="ekr.20060822101942.1">Overrides body_text_foreground_color.</t>
<t tx="ekr.20060826152759"></t>
<t tx="ekr.20060827102902"></t>
<t tx="ekr.20060827102902.1"></t>
<t tx="ekr.20060827102902.2"></t>
<t tx="ekr.20060828110551"></t>
<t tx="ekr.20060828110551.1">Valid settings for _style strings are None, normal, bold, italic, bold-italic.</t>
<t tx="ekr.20060828110551.2"></t>
<t tx="ekr.20060828110551.3"></t>
<t tx="ekr.20060828145228.1"># php_keyword1_font_family = None
php_keyword1_font_size = None
php_keyword1_font_slant = roman
    # roman, italic
php_keyword1_font_weight = normal
    # normal, bold</t>
<t tx="ekr.20060904211808"></t>
<t tx="ekr.20060904211808.1">The path to the zodb storage.</t>
<t tx="ekr.20060913144412">@keys nodes mark as set of @shortcuts nodes.  @keys nodes are used only by the script in the node:
    
    @button Check Bindings
    
in this file.  This makes it possible for the script to produce better error messages.</t>
<t tx="ekr.20060919171527"></t>
<t tx="ekr.20060919171527.1">True:  Use &lt;:body&gt; elements to hold body text in &lt;outline&gt; elements.
False: Use :body attributes to hold body text in &lt;outline&gt; elements.</t>
<t tx="ekr.20060919171527.2">The namespace urn for the xmlns attribute of &lt;opml&gt; elements.
This value typically is not used, but it should refer to Leo in some way.</t>
<t tx="ekr.20060919173031">True: Write (as attributes of the opml &lt;outline&gt; elements) the Leo-specific
      attributes written in Leo's &lt;v&gt; elements, namely 'a',
      'descendentTnodeUnknownAttributes', 'expanded', 'marks','t', and
      'tnodeList' elements.
    
False: Do not write such attributes.</t>
<t tx="ekr.20060919173031.1">True:  Write (as attributes of the opml &lt;head&gt; element) the attributes in Leo's &lt;globals&gt; element.
False: Do not write such attributes.</t>
<t tx="ekr.20060919181622">True:  Write body text in either &lt;:body&gt; elements or :body attributes,
       depending on the opml_use_outline_elements setting.

False: Write only outlines.</t>
<t tx="ekr.20060919195145">This should be either 2.0 or 1.0.
Version 2.0 is more flexible, and should be used unless there are problems.</t>
<t tx="ekr.20060921080239">True:  Read derived files referenced from @file and @thin nodes when reading .opml files.

False: Do not read derived when reading .opml files.</t>
<t tx="ekr.20060921080239.1">True:  Write derived files when writing .opml files.

False: Do not write derived when reading .opml files.</t>
<t tx="ekr.20060922110220">True:  Write unknown attributes (uA's) in either &lt;:uA&gt; sub-elements of &lt;outline&gt; elements.

False: Do not write uA's.</t>
<t tx="ekr.20060925060533.1"># Important: arrow keys also move the cursor: all arrow keys are handled elsewhere.

back-word                           = Alt-b  
back-word-extend-selection          = Alt-Shift-b
back-to-indentation                 = None # Ctrl-space
beginning-of-line                   = None # Ctrl-a
beginning-of-line-extend-selection  = Ctrl-Shift-a
end-of-line                         = Ctrl-e
exchange-point-mark                 = Alt-M     # Should be Ctrl-X Ctrl-X.
end-of-line-extend-selection        = Ctrl-Shift-e
extend-to-line                      = Alt-L
extend-to-word                      = Ctrl-W # Alt-W
forward-paragraph                   = Alt-}
forward-paragraph-extend-selection  = None # Alt-Ctrl-}
forward-sentence                    = None # Alt-e
forward-sentence-extend-selection   = None # Alt-Shift-e
forward-word                        = None # Alt-f
forward-word-extend-selection       = None # Alt-Shift-f
goto-global-line                    = Alt-g
# match-brackets                    = Ctrl-K    # kill-line
move-past-close                     = Alt-parenright # Same as Alt-shift-parenright
move-past-close-extend-selection    = None
# next-line                         = Ctrl-N
# next-line-extend-selection        = Ctrl-Shift-N
# previous-line                     = Ctrl-P
# previous-line-extend-selection    = Ctrl-Shift-P
select-all                          = Ctrl-a</t>
<t tx="ekr.20060925060533.2">contract-pane       = Alt-Ctrl--
expand-pane         = Alt-Ctrl-=
focus-to-body       = Alt-d
focus-to-tree       = Alt-t
toggle-active-pane  = Ctrl-t
keyboard-quit       = Ctrl-g

tab-cycle-previous  = Ctrl-Prior
tab-cycle-next      = Ctrl-Next
tab-cycle-next      = Ctrl-Tab

# Possible alternatives.
# keyboard-quit     = Escape # Hard to type, interferes with dismissing dialogs.
# focus-to-tree     = Ctrl-T
edit-setting        = Ctrl+Key-0
</t>
<t tx="ekr.20060925060533.3">clone-node                  = Ctrl-`
chapter-select              = None
contract-node               = None
copy-node                   = Shift-Ctrl-c
cut-node                    = Shift-Ctrl-x
contract-all                = Alt--
edit-headline               = Ctrl-h
delete-node                 !tree = Delete
delete-node                 !tree = Keypad+Delete
delete-node                 !tree = BackSpace
demote                      = Ctrl-}
demote                      = Ctrl-]
expand-next-level           = None
expand-node                 = Alt-]
extract                     = Shift-Ctrl-D
extract-names               = Shift-Ctrl-N
goto-next-clone             = Alt-N
insert-child                = Ctrl-Insert
insert-node                 = Ctrl-I
insert-node                 !tree = Insert
insert-node                 = Shift-Insert
mark                        = Ctrl-M
move-outline-down           = Ctrl-D
move-outline-left           = Ctrl-L
move-outline-right          = Ctrl-R
move-outline-up             = Ctrl-U
paste-node                  = Shift-Ctrl-V
promote                     = Ctrl-{
promote                     = Ctrl-[</t>
<t tx="ekr.20060925060533.4">add-comments                        = Ctrl-parenleft
backward-delete-char                !text = BackSpace
backward-delete-char                = Shift-BackSpace
backward-delete-word                = Ctrl-BackSpace
backward-kill-word                  = Alt-BackSpace
copy-text                           = Ctrl-c        # Conflicts with Emacs ctrl-c
cut-text                            = Ctrl-x
delete-char                         = Shift-Delete
delete-char                         = Keypad+Shift+Delete
delete-char                         !text = Delete
delete-char                         !text = Keypad+Delete
delete-comments                     = Ctrl-parenright # Shift-Ctrl-0
delete-word                         = Ctrl-Delete
delete-word                         = Keypad+Ctrl+Delete
delete-spaces                       = None
# indent-region                     = Tab # Only when text is selected.
indent-region                       = ctrl-greater # Ctrl-shift-&gt;
kill-line                           = Ctrl-k
kill-to-end-of-line                 = None
newline-and-indent                  = Ctrl-j
newline-and-indent                  !text = Tab
focus-to-body                       !tree = Tab
paste-text                          = Ctrl-v
reformat-paragraph                  = Shift-Ctrl-p
split-line                          = None
unformat-paragraph                  = Shift-Ctrl-u
unindent-region                     = ctrl-less # Ctrl-Shift-&lt;
unindent-region                     = Shift-tab # Only when text is selected.
yank                                = Ctrl-Y
yank-pop                            = Alt-Y
zap-to-character                    = Alt-z</t>
<t tx="ekr.20060925061845">close-window                = Ctrl-F4   # (was Alt-F4) Fixes bug 824087: Alt-F4 is not the same as Alt-F, c
exit-leo                    = Ctrl-q
new                         = Ctrl-n    # Ctrl-n conflicts with next-line.
open-outline                = Ctrl-o
save-file                   = Ctrl-s
write-at-file-nodes         = Shift-Ctrl-W
write-dirty-at-file-nodes   = Shift-Ctrl-Q
</t>
<t tx="ekr.20060925061845.1">auto-complete-force         = Ctrl-space
auto-complete               = period
debug                       = None
dabbrev-completion          = Alt-Ctrl-slash
dabbrev-expands             = Alt-slash
edit-setting                = None
execute-script              = Ctrl-B
redo                        = Shift-Ctrl-Z
run-all-unit-tests-externally       = None
run-all-unit-tests-locally          = None
run-marked-unit-tests-externally    = None
run-marked-unit-tests-locally       = None
run-selected-unit-tests-externally  = None
run-selected-unit-tests-locally     = None
show-calltips               = parenleft
show-calltips-force         = None # This command needs work before it is useful. Alt-parenleft
sort-siblings               = Alt-A
toggle-autocompleter        = Alt-1
toggle-calltips             = Alt-2
toggle-extend-mode          = Alt-3
undo                        = Ctrl-Z</t>
<t tx="ekr.20060926161207.1"></t>
<t tx="ekr.20060926161207.2">@nocolor

This setting determines the initial binding for otherwise-unbound keystrokes
when no mode is in effect.  Note: the keyboard-quit command exits all modes.

The valid values are::

command:  Leo ignores the key (like Vim).
insert:  Leo inserts the key at the cursor (like Emacs)
overwrite: Leo replaces the character at the cursor.</t>
<t tx="ekr.20060930085332">True: Outline gets focus when a new window is opened.
False Body pane gets focus when a new window is opened.</t>
<t tx="ekr.20060930085532">True: (Recommended) The find commands collapse all nodes that are not ancestors of the node containing the match.
False: The find command expands nodes needed to show the match, but does not collapse any nodes.</t>
<t tx="ekr.20060930111325"></t>
<t tx="ekr.20060930111325.1">The maximum length of button names.
</t>
<t tx="ekr.20060930111325.2">True: adds a button for every @button node.
</t>
<t tx="ekr.20060930111325.3">True: define a minibuffer command for every @command node.
</t>
<t tx="ekr.20060930111325.4">True: dynamically loads plugins in @plugins nodes when a window is created.
</t>
<t tx="ekr.20060930111325.5">True: dynamically executes script in @script nodes when a window is created.  DANGEROUS!
</t>
<t tx="ekr.20060930111325.6">True: create Debug Script button.
</t>
<t tx="ekr.20060930111325.7">True: create Run Script button.

Note: The plugin creates the press-run-script-button command regardless of this setting.</t>
<t tx="ekr.20060930112030">True: create Script Button button in icon area.

Note: The plugin creates the press-script-button-button regardless of this setting.</t>
<t tx="ekr.20061002115414"></t>
<t tx="ekr.20061002115414.1">The time (in seconds) that controls how handles keystrokes when the outline pane has focus.

When two keystrokes are separated by less than this time, Leo will attempt to
find the next headline that starts with the previous match, extended by the key
just typed. Otherwise, Leo will find the next headline that starts with the key
just typed.

The outline nav search reverts to a single-character search if the extended
search fails, so in practice everything works well without thinking about what
is happening.
</t>
<t tx="ekr.20061003173413"></t>
<t tx="ekr.20061007211759">True: collapse the parent of the moved node when moving a node left.
</t>
<t tx="ekr.20061009190510">True: update .leoRecentFiles.txt, creating it if if does not exist.
False: don't update .leoRecentFiles and don't create it.</t>
<t tx="ekr.20061010111324">True: (legacy) Select all headline text when editing a headline.
False: Put the cursor at the end of the headline text.</t>
<t tx="ekr.20061011082224">@language rest
@wrap

myLeoSettings.leo contains your personal settings.

Settings in myLeoSettings.leo override the settings in this file.

Put myLeoSettings.leo in your home (~) directory or in the ~/.leo directory.

Distributions of Leo do not contain myLeoSettings.leo; Leo never
changes your personal myLeoSettings.leo file.

**Note**: If you don't have myLeoSettings.leo, Leo creates it for you with a copy of @enabled-plugins from leoSettings.leo.
</t>
<t tx="ekr.20061012122620">True:  When a node is expanded, insert new nodes as the last child.
False: (legacy &amp; recommended) When a node is expanded, insert new nodes as the first child.</t>
<t tx="ekr.20061029091403"></t>
<t tx="ekr.20061210091932">True: call os.chdir(base) when handling a relative path.
      as specified by the @string relative_path_base_directory setting.
      
False: Do not call os.chdir(base) when handing a relative path.</t>
<t tx="ekr.20070115134125">True: (Recommended) The execute script command writes the script to be executed
      to a file, then executes the script using Python's execFile function. The
      script_file_path setting specifies the path to this file.
      
False (legacy): The execute script command uses Python's exec command to execute the script. </t>
<t tx="ekr.20070115134125.1">The path to the file to be written by the execute-script command.

The default path is home/.leo/scriptFile.py if no path is given.
  
Notes:
    
- This setting has effect only if the write_script_file setting is True.
- Use / to as the path delimiter, regardless of platform.
- The filename should end in .py.
</t>
<t tx="ekr.20070224073109">The body text of @enabled-plugins nodes contain the list of enabled plugins, one per line.

Comment lines starting with '#' are ignored.

Leo loads plugins in the order they appear.

There has been considerable confusion in the past about just how this works. Please read the following carefully.

Let us distinguish two different situations. First, what Leo does when loading a file, say x.leo initially. Second, what Leo does when loading a second file, say y.leo, *from x.leo*.

In the first case, Leo will use the *last* found @enabled-plugins node from the list list of settings files.  As always, the search order for settings is:

1. leo/config/leoSettings.leo
2. ~/.leo/leoSettings.leo
3. leo/config/myLeoSettings.leo
4. ~/.leo/myLeoSettings.leo
5.  x.leo

In the first case, it *is* possible to disable any or all plugins. For example, you could put an empty @enabled-plugins node in x.leo. If x.leo contains no @enabled-plugins node, you could put an empty @enabled-plugins node in myLeoSettings.leo.

In the second case, plugins have *already* been loaded and enabled. In this case, there is *no way* to disable already-loaded-and-enabled plugins. All you can do is enable more plugins.

y.leo can enable more plugins if it contains an @enabled-plugins node that mentions more plugins. If y.leo contains no @enabled-plugins node, loading y.leo might cause myLeoSettings.leo to enable more plugins if

a) x.leo contained an @enabled-plugins node and
b) myLeoSettings.leo mentions plugins not mentioned x.leo

To summarize, Leo enables plugins in a (relatively) straightforward way when it loads x.leo. Leo also enables plugins (in the same way) when loading y.leo. But things might get confusing, depending on whether x.leo or y.leo (or both or neither) contain @enabled-plugins nodes. This simply can't be helped, and it is emphatically *not* a bug in Leo.

Leo acts in a reasonable manner, but it is still possible to get confused even if you know the rules. This suggests that you refrain from putting @enabled-plugins nodes in any .leo file except myLeoSettings.leo. That way all your .leo files will use the same plugins. If you do put @enabled-plugins nodes in x.leo, be prepared for confusion from time to time.
</t>
<t tx="ekr.20070224073109.1"># Leo loads plugins in the order they appear here.

# This node *MUST* be a child of the @settings node to take effect.

# **Important**: to change these defaults, put
# an @enabled-plugins node in myLeoSettings.leo.

# Highly-recommended plugins:

plugins_menu.py
free_layout.py
    # Now loaded automatically.
    # But it's useful to have a free_layout menu in the Plugins menu.

# Recommended plugins:

contextmenu.py
    # This is required by the vim.py and xemacs.py plugins.
leo_to_html.py
livecode.py
mod_scripting.py
nav_qt.py
nodetags.py
quicksearch.py
python_terminal.py
screen_capture.py
settings_finder.py
stickynotes.py
todo.py
viewrendered.py

# Alphabetical list of all Leo plugins.

# Note: This list may be out of date. leo/plugins contains all official plugins.
# Note: Leo loads all qt_*.py files automatically when the qt gui is in effect.

# active_path.py
# add_directives.py
# at_folder.py
# at_produce.py
# at_view.py
# attrib_edit.py
# backlink.py
# bibtex.py
# bigdash.py
# bookmarks.py
# bzr_qcommands.py
# chapter_hoist.py
# codewisecompleter.py
# colorize_headlines.py
# contextmenu.py
# ctagscompleter.py
# cursesGui.py
# datenodes.py
# debugger_pudb.py
# dragdropgoodies.py
# dtest.py
# dump_globals.py
# empty_leo_file.py
# enable_gc.py
# expfolder.py
# FileActions.py
# free_layout.py
    # loaded automatically
# ftp.py
# geotag.py
# gitarchive.py
# graphcanvas.py
# import_cisco_config.py
# initinclass.py
# interact.py
# jinjarender.py
# leo_interface.py
# leo_pdf.py
# leo_to_html.py
# leo_to_rtf.py
# leocursor.py
# leofeeds.py
# leomail.py
# leomylyn.py
# leoOPML.py
# leoremote.py
# leoscreen.py
# lineNumbers.py
# livecode.py
# macros.py
# markup_inline.py
# maximizeNewWindows.py
# mime.py
# mnplugins.py
# mod_autosave.py
# mod_framesize.py
# mod_http.py
# mod_leo2ascd.py
# mod_read_dir_outline.py
# mod_scripting.py
# mod_speedups.py
# mod_tempfname.py
# mod_timestamp.py
# multifile.py
# nav_qt.py
# nested_splitter.py
    # loaded automatically.
# niceNosent.py
# nodeActions.py
# nodediff.py
# nodetags.py
# nodewatch.py
# notebook.py
# open_shell.py
# outline_export.py
# paste_as_headlines.py
# plugins_menu.py
# pretty_print.py
# projectwizard.py
# python_terminal.py
# QNCalendarWidget.py
# qt_quicksearch.py
# quickMove.py
# quicksearch.py
# quit_leo.py
# read_only_nodes.py
# redirect_to_log.py
# richtext.py
# rss.py
# rst3.py
# run_nodes.py
# screen_capture.py
# screencast.py
# screenshots.py
# script_io_to_body.py
# scripts_menu.py
# setHomeDirectory.py
# settings_finder.py
# sftp.py
# slideshow.py
# spydershell.py
# startfile.py
# stickynotes.py
# stickynotes_plus.py
# systray.py
# testRegisterCommand.py
# textnode.py
# todo.py
# tomboy_import.py
# trace_gc_plugin.py
# trace_keys.py
# trace_tags.py
# valuespace.py
# viewrendered.py
# viewrendered2.py
# vim.py
# wikiview.py
# word_count.py
# word_export.py
# xemacs.py
# xml_edit.py
# xsltWithNodes.py
# zenity_file_dialogs.py
</t>
<t tx="ekr.20070318065601">True:  Chapter commands are functional.
False: Chapter commands do not exists.

Leo shows the chapters dropdown box only if this setting is True.
</t>
<t tx="ekr.20070411101857">The body of @openwith nodes contains one or more lines of the following
form::

   tag: value

The possible tags are be::

    kind: &lt;a string&gt;

The value specifies the **opener logic**, that is, the method used to
launch the external editor, one of 'subprocess.Popen', 'os.startfile',
'os.spawnl', 'os.spawnv', 'exec'.

    arg: &lt;a string&gt;

There may be many such arg lines. Each line will be a string to be passed
as an argument to the opener logic.

Quotes in &lt;a string&gt; will be *retained*, allowing the user to specify
exactly the arguments to be passed to opener logic.</t>
<t tx="ekr.20070411101857.2">ext:    
kind:   subprocess.Popen
arg:    "C:/Program Files/Microsoft Office/Office/WINWORD.exe"</t>
<t tx="ekr.20070411172718">@openwith nodes in @settings trees create menu items. The openWith
plugin must be active for these settings to have any effect.

The headline of an @openwith node has the form::

    @openwith name = shortcut
    
name is name of the menu item. shortcut specifies the shortcut used to invoke
the menu item. shortcut may be None.

The body text @openwith nodes should contain a single line contain a tuple of the form::

    command,arg,ext

For example::
    
    'subprocess.Popen',['pythonw','C:/Python24/Lib/idlelib/idle.pyw'],'.py'
    
When the user selects this menu item Leo executes command(arg+path) where path
is the full path to the temp file. The ext argument specifies the extension of
the temp file. Notes:

- command is a string.  Valid values are::
    
  'subprocess.Popen'
  'os.system'
  'os.startfile'
  'os.spawnl'
  'os.spawnv'
  'exec'
  
- arg is either a single string or a list of strings.

- ext is a string or None. If None, Leo computes a file extension base on what
  @language directive is in effect.
  
- If the .leo file being loaded contains @openwith nodes, the File:Open With
menu contains only the items created by those nodes. Similarly, @openwith nodes
in myLeoSettings.leo override entries in leoSettings.leo.
</t>
<t tx="ekr.20070419103554">True:  Leo ensures that non-empty body text ends in a newline in @nosent trees.
False: Leo leaves body text alone when writing @nosent trees.</t>
<t tx="ekr.20070531103454"></t>
<t tx="ekr.20070604075218">True:  Chapter tabs appear in the outline pane.
False: Chapter tabs do not appear.</t>
<t tx="ekr.20070613133747"># These commands do nothing except serve as placeholders for the show-bindings command.
menu-shortcut = Alt-C # Cmds menu.
menu-shortcut = Alt-E # Edit menu.
menu-shortcut = Alt-F # File menu.
menu-shortcut = Alt-H # Help menu.
menu-shortcut = Alt-O # Outline menu.
menu-shortcut = Alt-P # Plugins menu.
menu-shortcut = Alt-S # Search and Settings menus.
menu-shortcut = Alt-W # Window menu.
</t>
<t tx="ekr.20070615094204">True: goto-next-node and goto-prev-node commands contract the selected node.</t>
<t tx="ekr.20070622214401">@nocolor-node

Please don't change this node and its descendants; they are for Leo's
developers.
</t>
<t tx="ekr.20070803082435">True: import commands (including @auto nodes) do full checks.</t>
<t tx="ekr.20070925144552">Leo creates its menus using @menus trees. Within @menus trees,
@menu nodes create menus and @item nodes create menu items.

Notes:

- The menu name always follows @menu. If the menu name is 'Plugins', Leo will
create the Plugins menu and populate the menu by calling the
'create-optional-menus' hook. This creates the Plugins menu as usual.

- Nested @menu nodes contain submenus.

- The command name follows @item. If the body text of an @item node exists, this
body text is the menu name. Otherwise, the menu name is the command name.
However, if the command name starts with a '*', hyphens are removed from the
menu name.

- Menu names and command names may contain a single ampersand (&amp;). If present,
the following character is underlined in the name.

- If the command name in an @item node is just a hyphen (-), the item represents
a menu separator.</t>
<t tx="ekr.20070926082407">@language rest

All @button nodes in the @buttons tree define **global buttons** that appear in all Leo outlines.

All other @button nodes define **local buttons** that appear only in this outline.

@language python
</t>
<t tx="ekr.20070926132045">@language rest

All @button nodes in the @buttons tree define **global buttons** that
appear in all Leo outlines.

All other @button nodes define **local buttons** that appear only in this
outline.

@language python
</t>
<t tx="ekr.20071006153053">True: add stuff consisting only of whitespace to the kill ring.</t>
<t tx="ekr.20071010123015">文件</t>
<t tx="ekr.20071010123015.1">新建</t>
<t tx="ekr.20071010123223.1">打开</t>
<t tx="ekr.20071024145953">False (legacy): Top pane contains outline and log panes.
True: Top pane contains only outline.  Bottom pane contains body and log panes.</t>
<t tx="ekr.20071110153046">This option has effect only when importing so-called non-strict languages,
for which leading whitespace is not terribly significant.

True: @auto warns about mismatches that occur solely in leading whitespace.</t>
<t tx="ekr.20071113084330"></t>
<t tx="ekr.20071114072753">True: the vim plugin will open @url nodes when they are double clicked.</t>
<t tx="ekr.20071213060239">@color</t>
<t tx="ekr.20071213060239.1"></t>
<t tx="ekr.20071213060239.2"></t>
<t tx="ekr.20071213060514"></t>
<t tx="ekr.20071213060514.1"></t>
<t tx="ekr.20071213060514.2"># Formatting options that apply to both code and rst modes....</t>
<t tx="ekr.20071213061454"></t>
<t tx="ekr.20071213061454.1"></t>
<t tx="ekr.20071213061454.2"></t>
<t tx="ekr.20071213061454.3"></t>
<t tx="ekr.20071213061504"></t>
<t tx="ekr.20071213061504.1"></t>
<t tx="ekr.20071213061504.2"></t>
<t tx="ekr.20071213061504.3"></t>
<t tx="ekr.20071213061811"></t>
<t tx="ekr.20071213061811.1"></t>
<t tx="ekr.20071213061811.2"></t>
<t tx="ekr.20071213061811.3">Required if using Sphinx markup.</t>
<t tx="ekr.20071213061923"># True: generate rst markup from @code and @doc parts.</t>
<t tx="ekr.20071213061923.1"># True: generate only from @doc parts.</t>
<t tx="ekr.20071213061923.2"># True: generate rst markup. False: generate plain text.</t>
<t tx="ekr.20071213061923.3"></t>
<t tx="ekr.20071213061930.1"># Can be set by @rst-no-head headlines.</t>
<t tx="ekr.20071213061930.2"></t>
<t tx="ekr.20071213061930.3"></t>
<t tx="ekr.20071213061930.4"></t>
<t tx="ekr.20071213062019"></t>
<t tx="ekr.20071213062019.1"></t>
<t tx="ekr.20071213062019.2"></t>
<t tx="ekr.20071213062019.3"></t>
<t tx="ekr.20071217093419">The body text should contain the data, one string per line. Lines starting with '#' are *included* in the data.

@data nodes may be split: the data consists of the body text of the @data node itself and the body text of all descendant nodes, in outline order. Two fine points about the concatenation of data:

1. Descendant nodes whose headlines start with '@' do not become part of the data. At present, no @data nodes have descendants, but this convention does something reasonable if nodes like @int or @string were descendants of an @data node.

2. The @data parser adds a newline to every "fragment" if necessary. This doesn't seem to matter for style sheets, but it could matter for other kinds of @data data.

**@data qt-gui-plugin-style-sheet**

The @data qt-gui-plugin-style-sheet node consists of some general comments, with descendant nodes for the body pane, tree pane, etc. etc. There is no limit of nesting: the Plugins node has a child for each plugin that uses style sheets.

This makes debugging style sheets easier. Typically, an error in any part of the style sheet invalidates the whole style sheet. With the new organization, one can swap nodes into or out of the @data node to find the invalid node or nodes.

**@data history-list**

Contains a list, one per line, of command names to be added to command history.  Order is significant.
</t>
<t tx="ekr.20080204124255"># For testing only.

start-ipython           = Alt-Ctrl-Shift-i
push-to-ipython         = Alt-Shift-i # Alt-i is now bind to isearch-forward.
</t>
<t tx="ekr.20080212084020">The encoding used for files imported by @auto if no @encoding directive is in effect.
Default is UTF-8 (case not important).</t>
<t tx="ekr.20080312071248.19">The headline contains the button name, optionally followed by an @key=val field indicating a shortcut.

The body text contains the script associated with the button.</t>
<t tx="ekr.20080312071248.20">The headline contains the command name, optionally followed by an @key=val field indicating a shortcut.

The body text contains the script associated with the command.</t>
<t tx="ekr.20080312071248.25">Denotes the tree containing active @button nodes.
@button nodes outside this tree are ignored.</t>
<t tx="ekr.20080312071248.26">Denotes the tree containing active @command nodes.
@command nodes outside this tree are ignored.</t>
<t tx="ekr.20080312075451.1">@language rest

All @command nodes in the @commands tree define **global commands** that
appear in all Leo outlines.

All other @command nodes define **local commands** that are defined only in
this outline.
</t>
<t tx="ekr.20080312075451.2">@language python
@nocolor-node

All @command nodes in the @commands tree define **global commands** that appear in all Leo outlines.

All other @command nodes define **local commands** that are defined only in this outline.
</t>
<t tx="ekr.20080315083057.7">True: (Recommended) The spell commands collapse all nodes that are not ancestors of the node containing the match.
False: The spell commands do not collapse any nodes.</t>
<t tx="ekr.20080324105006.6">True: allow linux-like pastes using a mouse's middle button.

Important: this may cause crashes on some platforms.</t>
<t tx="ekr.20080326060254.3">The default language if no @language or @comment is in effect.

Valid values are (case is ignored):

actionscript,c,csharp,css,cweb,elisp,html,java,latex,
pascal,perl,perlpod,php,plain,plsql,python,rapidq,rebol,shell,tcltk.</t>
<t tx="ekr.20080412115752.1"># Must be four entries: width,height,left,top.
# Put this in myLeoSettings.leo, **not** in individual .leo files.
# This setting has no effect unless @bool fixed_window = True

1200
800
50
50</t>
<t tx="ekr.20080510072134.2">cycle-focus                         = None # Ctrl-tab: now tab-cycle-next
# cycle-all-focus                   = Ctrl-Shift-tab

back-word                           = Ctrl-LtArrow
back-word-extend-selection          = Ctrl-Shift-LtArrow
beginning-of-buffer                 = Ctrl-Home
beginning-of-buffer-extend-selection= Ctrl-Shift-Home
end-of-buffer                       = Ctrl-End
end-of-buffer-extend-selection      = Ctrl-Shift-End
forward-word                        = Ctrl-RtArrow
forward-word-extend-selection       = Ctrl-Shift-RtArrow
#
# Keypad variants...
back-word                           = Keypad+Ctrl-LtArrow
back-word-extend-selection          = Keypad+Ctrl-Shift-LtArrow
beginning-of-buffer                 = Keypad+Ctrl-Home
beginning-of-buffer-extend-selection= Keypad+Ctrl-Shift-Home
end-of-buffer                       = Keypad+Ctrl-End
end-of-buffer-extend-selection      = Keypad+Ctrl-Shift-End
forward-word                        = Keypad+Ctrl-RtArrow
forward-word-extend-selection       = Keypad+Ctrl-Shift-RtArrow

# beginning-of-line                   = Home
back-to-home                        = Home
beginning-of-line-extend-selection  = Shift-Home
end-of-line                         = End
end-of-line-extend-selection        = Shift-End
#
# Keypad variants...
back-to-home                        = Keypad+Home
beginning-of-line-extend-selection  = Keypad+Shift-Home
end-of-line                         = Keypad+End
end-of-line-extend-selection        = Keypad+Shift-End
</t>
<t tx="ekr.20080510121331.16"># Must keep all these bindings for basic vim compatibility.

beginning-of-line           = a
# unused                    = b
# unused                    = c
enter-d-mode                = d
end-of-line                 = e
find-character              = f
# find-word                 = Shift-f
# unused                    = g
# unused                    = h
set-insert-state            = i
# unused                    = j
kill-line                   = k
select-all                  = l
# unused                    = m
# unused                    = n
focus-to-tree               = o
# unused                    = p
enter-quick-command-mode    = q
# unused                    = r
# toggle-from-minibuffer    = t
# unused                    = u
toggle-extend-mode          = v
forward-word                = w
back-word                   = Shift-w
delete-char                 = x
yank                        = y
undo                        = z
redo                        = Shift-z
full-command                = :
# enter-newline-insert-mode   ! body = Return

# cursor movement keys...
    # back-char           = h
    # forward-char        = l
    # next-line           = j
    # previous-line       = k
    
    # A 	Append to the end of the current line.
    # C 	Change the rest of the current line.
    # H 	To the first line of the screen.
    # I 	Insert to the start of the current line. (first non-whitespace char)
    # L 	To the the last line of the screen.
    # M 	To the middle line of the screen.
    # N 	Scan for next search match but opposite direction.
    # O 	Open a new line above and insert.
    # P 	Put characters before the cursor. Put lines above the current line.
    # V 	Start highlighting lines.
    # U 	Undo all the latest changes that were made to the current line.
    # X 	Delete characters before the cursor.
    # ^ 	Move to the first non-whitespace character of a line.
    # $ 	Move to the end of a line.
    # Ctrl + r 	Redo.
    
    # a 	Append after cursor.
    # b 	Move to the beginning of a word.
    # d6  Delete 6 lines.
    # dd  Delete the current line.
    # e  	Move to the end of a word.
    # i  	Insert before cursor.
    # o 	Open a new line below and insert.
    # n 	Scan for next search match in the same direction.
    # p 	Put (paste) the text you yanked or deleted.
        # Put characters after the cursor. Put lines below the current line.
    # r 	Overwrite one character. After overwriting the single character, go back to command mode.
    # v  	Start highlighting characters. Use the normal movement keys and commands to select text for highlighting.
        # Then use any other command, like d, on the region.
    # u  	Undo the last action.
    # x  	Delete characters under the cursor.
    # /pattern Incremental search for pattern.
    
    # # Commands for visual mode
    # &gt; Shift right.
    # &lt; Shift left.
    # c Change the highlighted text.
    # yy or Y Yank the highlighted text and copy to clipboard.
    # d Delete the highlighted text and copy to clipboar.
    
    # # Perhaps less useful
    # # ~  	Change the case of characters.
    # #   - In visual mode, change the case of highlighted characters.
    # #   - In command mode, change the case of the character uder cursor.
    # # R 	Enter insert mode but replace characters rather than inserting.
    # # E 	To the end of a whitespace-delimited word.
    # # B 	To the beginning of a whitespace-delimited word.
    
    # # Commands...
    # . repeat last complete editing command.
    # % match paren
    # : enter file (command?) mode
    # :42&lt;return&gt; go to line 42
    # :d Delete the current line.
    
    # :s/foo/bar 	Substitute foo with bar on current line
    # :s/foo/bar c Confirm each substitution. y: make match, n: skip match, a: all remaining, q: quit.
    # :s/foo/bar/g Substitute all occurances on current line.
    # :s/foo/bar/i Ignore case
    # :s/foo/bar/gi (combination of arguments)
    # :s/foo/bar/I Do not ignore case
    # :42s/foo/bar Substitute on line 42
    # :%s/foo/bar Substitute on entire file.
    # :y Yank the current line.
</t>
<t tx="ekr.20080511041907.1">#f9f0f4 light pink
#fbfdfd very light blue

For some reason, colors in the text widget do not match the colors in the canvas widget.</t>
<t tx="ekr.20080511041907.2"></t>
<t tx="ekr.20080512082834.1"># Now that we know what commands are single-line editing commands,
# Only &lt;return&gt; and arrow keys need per-pane bindings.

# These all cause problems on Ubuntu...

# do-nothing    = Ctrl-PageUp  # 20130210 - TNB - defined for tab-flipping,
# do-nothing    = Ctrl-PageDn  # working in Xfce at least

end-edit-headline           ! tree = Return # Escape is also possible.
# end-edit-headline           ! tree = Escape # May interfere with dismissing dialogs.
insert-newline              ! body = Return
insert-newline              ! text = Insert
#
# Keypad variants...
end-edit-headline           ! tree = Keypad+Return
insert-newline              ! body = Keypad+Return

back-char                   ! text = LtArrow
forward-char                ! text = RtArrow
next-line                   ! text = DnArrow
previous-line               ! text = UpArrow
#
# Keypad variants...
back-char                   ! text = Keypad+LtArrow
forward-char                ! text = Keypad+RtArrow
next-line                   ! text = Keypad+DnArrow
previous-line               ! text = Keypad+UpArrow

back-char-extend-selection      ! text = Shift-LtArrow
forward-char-extend-selection   ! text = Shift-RtArrow
next-line-extend-selection      ! text = Shift-DnArrow
previous-line-extend-selection  ! text = Shift-UpArrow
#
# Keypad variants...
back-char-extend-selection      ! text = Keypad+Shift-LtArrow
forward-char-extend-selection   ! text = Keypad+Shift-RtArrow
next-line-extend-selection      ! text = Keypad+Shift-DnArrow
previous-line-extend-selection  ! text = Keypad+Shift-UpArrow

contract-or-go-left         ! tree = LtArrow
expand-and-go-right         ! tree = RtArrow
goto-next-visible           ! tree = DnArrow
goto-prev-visible           ! tree = UpArrow
move-outline-down           ! tree = Shift-DnArrow
move-outline-left           ! tree = Shift-LtArrow
move-outline-right          ! tree = Shift-RtArrow
move-outline-up             ! tree = Shift-UpArrow
#
# Keypad variants...
contract-or-go-left         ! tree = Keypad+LtArrow
expand-and-go-right         ! tree = Keypad+RtArrow
goto-next-visible           ! tree = Keypad+DnArrow
goto-prev-visible           ! tree = Keypad+UpArrow
move-outline-down           ! tree = Keypad+Shift-DnArrow
move-outline-left           ! tree = Keypad+Shift-LtArrow
move-outline-right          ! tree = Keypad+Shift-RtArrow
move-outline-up             ! tree = Keypad+Shift-UpArrow
#
# These cause problems with editing headlines.
# goto-first-visible-node     ! tree= Home
# goto-last-visible-node      ! tree= End
contract-or-go-left         = Alt-LtArrow
expand-and-go-right         = Alt-RtArrow
goto-next-visible           = Alt-DnArrow
goto-prev-visible           = Alt-UpArrow
move-outline-down           = Alt-Shift-DnArrow
move-outline-left           = Alt-Shift-LtArrow
move-outline-right          = Alt-Shift-RtArrow
move-outline-up             = Alt-Shift-UpArrow
#
# Keypad variants...
contract-or-go-left         = Keypad+Alt-LtArrow
expand-and-go-right         = Keypad+Alt-RtArrow
goto-next-visible           = Keypad+Alt-DnArrow
goto-prev-visible           = Keypad+Alt-UpArrow
move-outline-down           = Keypad+Alt-Shift-DnArrow
move-outline-left           = Keypad+Alt-Shift-LtArrow
move-outline-right          = Keypad+Alt-Shift-RtArrow
move-outline-up             = Keypad+Alt-Shift-UpArrow

do-nothing                  ! tree = Ctrl-DnArrow
do-nothing                  ! tree = Ctrl-UpArrow
move-lines-up               ! body = Ctrl-UpArrow
move-lines-down             ! body = Ctrl-DnArrow
#
# Keypad variants...
do-nothing                  ! tree = Keypad+Ctrl-DnArrow
do-nothing                  ! tree = Keypad+Ctrl-UpArrow
move-lines-up               ! body = Keypad+Ctrl-UpArrow
move-lines-down             ! body = Keypad+Ctrl-DnArrow
  
goto-first-visible-node     = Alt-Home
goto-last-sibling           = Alt-End
#
# Keypad variants...
goto-first-visible-node     = Keypad+Alt-Home
goto-last-sibling           = Keypad+Alt-End

back-page                       ! text = PageUp
back-page-extend-selection      ! text = Shift-PageUp
forward-page                    ! text = PageDn
forward-page-extend-selection   ! text = Shift-PageDn
#
# Keypad variants...
back-page                       ! text = Keypad+PageUp
back-page-extend-selection      ! text = Keypad+Shift-PageUp
forward-page                    ! text = Keypad-PageDn
forward-page-extend-selection   ! text = Keypad+Shift-PageDn

scroll-down-half-page   ! tree = Shift-PageDn
scroll-down-page        ! tree = PageDn
scroll-up-half-page     ! tree = Shift-PageUp
scroll-up-page          ! tree = PageUp
#
# Keypad variants...
scroll-down-half-page   ! tree = Keypad+Shift-PageDn
scroll-down-page        ! tree = Keypad+PageDn
scroll-up-half-page     ! tree = Keypad+Shift-PageUp
scroll-up-page          ! tree = Keypad+PageUp
</t>
<t tx="ekr.20080513095644.1"># q in vim bindings.
# The mode prompt is everything following the ::
# Allows temporary rebindings without interfering with typical bindings.

--&gt; set-silent-mode
--&gt; mode-help

keyboard-quit           = Ctrl-g # not needed, but a good reminder
keyboard-quit           = Return
keyboard-quit           = Escape

rectangle-close         = c
convert-blanks          = b
convert-tabs            = t
execute-script          = e
rectangle-open          = o
repeat-complex-command  = a
reformat-paragraph      = r
remove-blank-lines      = Shift-B
sort-lines              = l
sort-siblings           = s

# enter-emacs-mode        = space
# enter-buttons-mode      = b
# enter-commands-mode     = c
# enter-edit-mode         = e
# enter-file-mode         = f
# enter-gui-mode          = g
# enter-help-mode         = h
# enter-kill-mode         = k
# enter-modes-mode        = m
# enter-outline-mode      = o
# enter-move-outline-mode = Shift-o
# enter-toggle-find-mode  = t
# enter-extract-mode      = x</t>
<t tx="ekr.20080514065934.1">- To enable vim-like bindings, put the following in the @settings tree in
  myLeoSettings.leo:

    @strings [command,insert, overwrite] top_level_unbound_key_action = command

- I like the following setting even in "legacy" operation, and I especially
recommend it, or something like it, for when using vim-like bindings:

    @color insert_mode_bg_color = #fdf5f5

It's a soft pink that contrasts nicely with the soft yellow color gets shown in
the body pane when the body pane does *not* have focus.

- vim-like bindings are defined in leoSettings.leo in the node:

    @shortcuts Vim plain keys

Play with these as you will. For multi-key sequences, like 'dd', you would have
to define a 'd' mode that handles the follow-on characters after the first d. On
my list: munge mode names so they make pleasing prompts in the minibuffer. Maybe
today.

I'd like to offer a $100 prize for the best vim simulation. This would require
modes for all plain keys that have more than one continuation. I might be
tempted to add more vim-like features, especially support for vim '.', if I knew
that people were really using heavy-duty vim bindings.

If you define your own key bindings in myLeoSettings.leo, I highly recommend
basing them on the new bindings in the '@keys EKR bindings' tree. You will
probably find that your bindings are much easier to understand.
</t>
<t tx="ekr.20080514082950.2">Overrides body_text_background_color.

#fdf5f5 A light pink.
#f0fde1 A light green.
#f9e6dd A light orange.</t>
<t tx="ekr.20080515053412.10">Dedent</t>
<t tx="ekr.20080515053412.11"></t>
<t tx="ekr.20080515053412.12"></t>
<t tx="ekr.20080515053412.13"></t>
<t tx="ekr.20080515053412.14">recent-files-menu

# This will include a copy of @popup recent-files-menu</t>
<t tx="ekr.20080515053412.15"></t>
<t tx="ekr.20080515053412.16"></t>
<t tx="ekr.20080515053412.17"></t>
<t tx="ekr.20080515053412.18">rclick-gen-context-sensitive-commands

# This is an example of a menu generator command. It will scan the
body text for
# occuurances of hyperlinks, or section headings in the current line
- Hide quoted text -
or in the
# selected text and append items to the menu that will invoke a
webbrowser or
# jump to the section as appropriate.
</t>
<t tx="ekr.20080515053412.19">@popup log is the default menu for
right clicks in the log pane.</t>
<t tx="ekr.20080515053412.20">edit-menu</t>
<t tx="ekr.20080515053412.21">@popup find-text is the default menu
for right clicks in the find text entry in the find panel.</t>
<t tx="ekr.20080515053412.22">edit-menu</t>
<t tx="ekr.20080515053412.23">@popup change-text is the default
menu for right clicks in the change text entry in the find panel.</t>
<t tx="ekr.20080515053412.24">find-text</t>
<t tx="ekr.20080515053412.25">@popup canvas is the default menu
for right clicks in the tree canvas that occur outside any other tree
widget.</t>
<t tx="ekr.20080515053412.26">to-chapter-fragment</t>
<t tx="ekr.20080515053412.27"></t>
<t tx="ekr.20080515053412.28"></t>
<t tx="ekr.20080515053412.29"></t>
<t tx="ekr.20080515053412.3"></t>
<t tx="ekr.20080515053412.30">@popup headline is the default menu
for right clicks in the text part of the headline.</t>
<t tx="ekr.20080515053412.31">@popup iconbox is the default menu
for right clicks in the icon box pane.  This will normally be
overridden by the cleo menu.</t>
<t tx="ekr.20080515053412.32">@popup plusbox is the default menu
for right clicks on the plusbox.</t>
<t tx="ekr.20080515053412.33"></t>
<t tx="ekr.20080515053412.34"></t>
<t tx="ekr.20080515053412.35">Cut

icon = Tango/16x16/actions/editcut.png</t>
<t tx="ekr.20080515053412.36">Copy

icon = Tango/16x16/actions/editcopy.png</t>
<t tx="ekr.20080515053412.37">Paste

icon = Tango/16x16/actions/editpaste.png</t>
<t tx="ekr.20080515053412.38"></t>
<t tx="ekr.20080515053412.39">Select All
#First line must be blank as we want to work out the
#label based on the command, key = value pairs may follow.</t>
<t tx="ekr.20080515053412.4"></t>
<t tx="ekr.20080515053412.40">@popup recent-files-menu is a
fragment meant to be included in other menus.

It consists of a single cascade menu which opens to show a list of
recent files. </t>
<t tx="ekr.20080515053412.41"></t>
<t tx="ekr.20080515053412.42">rclick-gen-recent-files-list</t>
<t tx="ekr.20080515053412.43"></t>
<t tx="ekr.20080515053412.44"></t>
<t tx="ekr.20080515053412.45">clone-node-to-chapter-menu</t>
<t tx="ekr.20080515053412.46"></t>
<t tx="ekr.20080515053412.47">copy-node-to-chapter-menu</t>
<t tx="ekr.20080515053412.48"></t>
<t tx="ekr.20080515053412.49">move-node-to-chapter-menu</t>
<t tx="ekr.20080515053412.5">@popup body is the default menu for
right clicks in the body pane.
</t>
<t tx="ekr.20080515053412.50">chapter-select</t>
<t tx="ekr.20080515053412.51">select-chapter-menu</t>
<t tx="ekr.20080515053412.6">edit-menu

# This will include the contents of @popup edit-text </t>
<t tx="ekr.20080515053412.7"></t>
<t tx="ekr.20080515053412.8"></t>
<t tx="ekr.20080515053412.9">Indent</t>
<t tx="ekr.20080703111151.12"># bold words in forth

forth_keyword3_family = None
forth_keyword3_font_size = None
forth_keyword3_font_slant = roman
forth_keyword3_font_weight = bold
</t>
<t tx="ekr.20080703111151.14"># bold-italic words in forth

forth_keyword4_family = None
forth_keyword4_size = None
forth_keyword4_slant = slant
forth_keyword4_weight = bold
</t>
<t tx="ekr.20080703111151.15"># italic words in forth

forth_keyword5_family = None
forth_keyword5_size = None
forth_keyword5_slant = slant
forth_keyword5_weight = normal
</t>
<t tx="ekr.20080703111151.17"># defining words in forth

forth_keyword2_family = None
forth_keyword2_size = None
forth_keyword2_slant = None
forth_keyword2_weight = None
</t>
<t tx="ekr.20080703111151.18">@language text</t>
<t tx="ekr.20080703111151.21"># bold keywords defined in forth-bold-words</t>
<t tx="ekr.20080703111151.22"># bold-italic keywords defined in @data forth-bold-italic-words</t>
<t tx="ekr.20080703111151.23"># italic keywords defined in forth-italic-words</t>
<t tx="ekr.20080705064822.1">:
variable
constant
code
</t>
<t tx="ekr.20080705064822.2"></t>
<t tx="ekr.20080705064822.3"></t>
<t tx="ekr.20080705064822.4">\Delimiter pairs for forth colorizing, one per line

[ ]
{ }
asm[ ]asm
</t>
<t tx="ekr.20080705064822.5">\ lines beginning with '\' are comments, and ignored.
\ declare any supplementary forth words you want coloured, one per line, below

\ asm[ ]asm     now string delims.
\ :             now a defining word.

!
&lt;
'
+
,
-
1+
2&gt;r
2r&gt;
2drop
2dup
2swap
::
::code
;
&lt;=
=
&gt;
&gt;=
&gt;r
r&gt;
&gt;w
w&gt;
[']
again
and
begin
code
constant
drop
dup
else
end-code
exit
host
if
include
invert
label:
macro
meta
needs
or 
picasm
repeat
return-in-w
swap
target
then
until
v-for
v-next
variable
while
@</t>
<t tx="ekr.20080705064822.6"></t>
<t tx="ekr.20080705064822.7">\ List of supplementary tokens to be syntax-coloured by Leo as Forth 'string words'.
\ Each line contains a pair of tokens.
\ Lines beginning with '\' are comments, and ignored.

" "
c" "
." "
s" "
.( )

abort" "
tty" "
ttyl" "
lcd1" "
lcd2" "
lcd1c" "
lcd2c" "
</t>
<t tx="ekr.20080811105020.2">False: (recommended) Enable import parsing for @shadow and @auto
True: @shadow and @auto create a single node for the entire file.</t>
<t tx="ekr.20080921060401.3"></t>
<t tx="ekr.20080930072519.3"></t>
<t tx="ekr.20080930072519.4">The number of buttons or widget in any one row of icons in the icon area.
If there are more than this number, a new row is created.</t>
<t tx="ekr.20081020075840.10">Argument to QSciScintilla.zoomIn method.
This allows you to increase the font size.
</t>
<t tx="ekr.20081022181056.10"># Lines have the form: color, style
# color may be any kind of Qt color specifier
# See http://pyqt.sourceforge.net/Docs/QScintilla2/classQsciLexerPython.html
# for list of selector names.

# Firebrick3: #CD2626
# Black: #000000
# Green: #008000
# Leo Green: # 00AA00
# Red: #FF0000
# Blue: #0000FF

# Note: the following lines must be indented.

    black, ClassName
    #CD2626, Comment
    #CD2626, CommentBlock
    #00AA00, Decorator
    #00AA00, DoubleQuotedString
    black, FunctionMethodName
    black, HighlightedIdentifier
    black, Identifier
    blue,  Keyword
    black, Number
    black, Operator
    #00AA00, SingleQuotedString
    #00AA00, TripleSingleQuotedString
    #00AA00, TripleDoubleQuotedString
    #00AA00, UnclosedString
</t>
<t tx="ekr.20081023060109.14"></t>
<t tx="ekr.20081216090156.5">The escape string that Leo inserts to represent underindented lines.

If a line starts with \\-N, Leo will write the line with N fewer spaces
than expected.

An **underindented line** is a line of body text that is indented less then
the starting line of the class, method or function in which it appears. Leo
outlines can not represent such lines exactly: every line in an external
file will have at least the indentation of any unindented line of the
corresponding node in the outline. Leo will issue a warning (not an error)
for underindented Python comment lines. Such lines can not change the
meaning of Python programs.
</t>
<t tx="ekr.20090202191501.10"></t>
<t tx="ekr.20090202191501.11"># Not used yet.</t>
<t tx="ekr.20090203131919.1">'''Check that all commands mentioned in the @menus tree actually exist.'''

def checkMenu (p):
    for p2 in p.subtree_iter():
        if p2.h.startswith('@item'):
            checkItem(p.h,p2)

def checkItem (menuName,p):
    h = p.h[len('@item'):].replace('&amp;','').replace('*','').strip()
    if h != '-' and h not in c.commandsDict:
        print ('command not found: %s: %s' % (menuName,p.h))

menus = g.findNodeAnywhere(c,'@menus')
assert menus, 'no @menus tree'
for p in menus.subtree_iter():
    if p.h.startswith('@menu'):
        checkMenu(p.copy())

print ('done')
</t>
<t tx="ekr.20090213065933.11"></t>
<t tx="ekr.20090408091222.1"># These are needed because Qt reports Ctrl-( as Ctrl-Shift-9, etc.

# add-comments        = Ctrl-Shift-9  # Ctrl-parenleft
# delete-comments     = Ctrl-Shift-0  # Ctrl-parenright
# demote              = Ctrl-Shift-]  # Ctrl-}
# move-past-close     = Alt-Shift-0   # Alt-parenright
# promote             = Ctrl-Shift-[  # Ctrl-{
</t>
<t tx="ekr.20090430075506.7">True: write comment line of the form:
    
.. rst3: filename: &lt;filename&gt;

at start of intermediate file. Requires rst3_generate_rst and
rst3_write_intermediate_file options both to be true.</t>
<t tx="ekr.20090430173906.1">@nocolor-node

The rST markup string preceding code parts.

The default for the C, Perl, Python and Ruby languages is: 

'**code**:\n\n.. code-block:: %s\n' % language.title()

The default for all other languages is:
    
'**code**:\n\n.. class:: code\n..\n\n::\n'

A reasonable alternative would be:
    
'\n.. class:: code\n..\n\n::\n'</t>
<t tx="ekr.20090514111518.8379"></t>
<t tx="ekr.20090620112052.9070">@nocolor

The encoding assumed for strings used by the Qt plugin.
UTF-8 is a reasonable default.
Change to your Python's default encoding if you have unicode problems.</t>
<t tx="ekr.20090724102842.2492">If zero, all nodes are colorized, regardless of length of body text.
If &gt; 0, only nodes whose body text are smaller than this limit are colorized.

200000</t>
<t tx="ekr.20100102121150.6344">
</t>
<t tx="ekr.20100107060708.6390"></t>
<t tx="ekr.20100313080341.8368"></t>
<t tx="ekr.20100313080341.8369"></t>
<t tx="ekr.20100313080341.8370"></t>
<t tx="ekr.20100313080341.8371"></t>
<t tx="ekr.20100507153425.8304">Valid values are top,bottom,left,right</t>
<t tx="ekr.20100904095239.8440">The language code for Enchant.
For information about supported languages, see:
http://pythonhosted.org/pyenchant/tutorial.html#adding-language-dictionaries
</t>
<t tx="ekr.20100904095239.8441">Defaults to leo/plugins/spellpyx.txt</t>
<t tx="ekr.20100904134301.11000"></t>
<t tx="ekr.20100904134301.11002"># Comments lines (lines starting with '#') are ignored.
# Non-comment lines should have the form::
#
#    name=definition

# Definitions in @data abbreviation nodes override definitions in @data
# global-abbreviation nodes. 

# Typically you would define @data global-abbreviation nodes
# in myLeoSettings.leo and @data abbreviation nodes in local files.

# type html;; to insert template and ,, to select next &lt;|placeholder|&gt;
html;;=&lt;html&gt;
\:&lt;head&gt;
\:&lt;title&gt;&lt;|title|&gt;&lt;/title&gt;
\:&lt;style&gt;
\:&lt;/style&gt;
\:&lt;/head&gt;
\:&lt;body&gt;
\:&lt;|content|&gt;
\:&lt;/body&gt;
\:&lt;/html&gt;

# this abbreviation will only work with @bool scripting-abbreviations = True
# (or @bool scripting-at-script-nodes = True)
date;;={|{x=time.asctime()}|}
</t>
<t tx="ekr.20100904134301.11004"># Comments lines (lines starting with '#') are ignored.
# Non-comment lines should have the form::
#
#    name=definition

# Definitions in @data abbreviation nodes override definitions in @data
# global-abbreviation nodes.

# Typically you would define @data global-abbreviation nodes
# in myLeoSettings.leo and @data abbreviation nodes in local files.
</t>
<t tx="ekr.20100904134301.11006">True: enable abbreviations
False disable abbreviations
</t>
<t tx="ekr.20100907092300.6957"></t>
<t tx="ekr.20100907092300.6958">Path to inkscape template file
</t>
<t tx="ekr.20100907092300.6959">Path to Inkscape executable</t>
<t tx="ekr.20100910115903.8297"></t>
<t tx="ekr.20100910115903.8299"></t>
<t tx="ekr.20101009103953.8642">True (recommended):
    Write "E" attribute bits in &lt;v&gt; elements.
    Leo outlines will record the expansion state of all nodes.
    
False: (Good for files like unitTest.leo)
    Suppress "E" attribute bits in &lt;v&gt; elements.
    Only the ancestors of the presently selected node will
    be expanded when Leo opens an outline.</t>
<t tx="ekr.20101104191857.8345">True:  put non-definition code in separate nodes.
False: put trailing non-definition code at the start of the next node.</t>
<t tx="ekr.20110510071925.14588"></t>
<t tx="ekr.20110510071925.14589">True:  show completions in a QCompleter popup.
False: show completions in Leo's Completions tab.

**Note**: this option has effect only when using the qt or qttabs gui's.
</t>
<t tx="ekr.20110510071925.14590">True: use codewise completions.
False: use leo-specific completions.

This setting is no longer used!</t>
<t tx="ekr.20110512085854.14461">True: Automatically extend the completed text to the longest common prefix of all completions.</t>
<t tx="ekr.20110601103939.19339">True: A *single* click in an already selected node begins editing of the headline.</t>
<t tx="ekr.20110611092035.16463"></t>
<t tx="ekr.20110611092035.16471"></t>
<t tx="ekr.20110611092035.16474"></t>
<t tx="ekr.20110611092035.16476">If neither is checked, Leo searches the entire outline.</t>
<t tx="ekr.20110611092035.16477"></t>
<t tx="ekr.20110611092035.16478">These commands are deprecated</t>
<t tx="ekr.20110611092035.16479"></t>
<t tx="ekr.20110611092035.16480">@language rest
@wrap
</t>
<t tx="ekr.20110611092035.16481"></t>
<t tx="ekr.20110611092035.16482"></t>
<t tx="ekr.20110611092035.16483"></t>
<t tx="ekr.20110611092035.16488"></t>
<t tx="ekr.20110611092035.16489"></t>
<t tx="ekr.20110611092035.16491"></t>
<t tx="ekr.20110611092035.16492"></t>
<t tx="ekr.20110612074140.16414">'''Check that all settings in leoPy.leo are defined here, and vice versa.'''

import os

class CheckSettings:
    @others

CheckSettings(c).run()
</t>
<t tx="ekr.20110612074140.16415">def run (self):

    verbose = False
    settings_node = g.findNodeAnywhere(self.c,'@settings')

    if not self.core_c:
        return g.error('leoPy.leo must be open')

    if not settings_node:
        return g.error('no @settings node in leoPy.leo')

    # Step 1: compute aList1, the list of all settings in Leo's core.
    aList1 = []
    for p in self.core_c.all_positions():
        self.get_settings(aList1,p)
        aList1 = list(set(aList1))
        aList1.sort()

    # Step 2: compute aList2, the list of all settings nodes in leoSettings.leo.
    aList2 = []
    for p in settings_node.subtree():
        self.get_settings_nodes(aList2,p)
        aList2 = list(set(aList2))
        aList2.sort()

    if verbose:
        os.system('cls')
    else:
        print('-'*10)

    for aList,tag in ((aList1,'leoPy.leo'),(aList2,'leoSettings.leo')):
        nl = g.choose(verbose,'\n','')
        end = g.choose(verbose,'...','')
        print('%s%s unique settings in %s%s%s' % (
            nl,len(aList),tag,end,nl))
        if verbose:
            for z in aList:
                print(z.strip())

    if verbose: g.es_print('done')</t>
<t tx="ekr.20110612074140.16416">def init (self):

    # leoPy.leo must be available.
    for f in g.app.windowList:
        c = f.c
        fn = c.shortFileName()
        if fn == 'leoPy.leo':
            self.core_c = c
            return
    else:
        self.core_c = None
</t>
<t tx="ekr.20110612074140.16417">def __init__ (self,c):

    self.c = c
    self.core_c = None
    self.settingsNames =  (
        # 'getAbbrevDict','getCommonCommands',
        # 'getDirectory',
        # 'getEnabledPlugins','getLanguage',
        # 'getMenusList','getOpenWith',
        # 'getRecentFiles','getShortcut',
        'getBool','getColor','getData',
        'getFloat','getFontFromParams',
        'getInt','getRatio','getString',
    )
    self.settingsAtNames = (
        '@bool','@color','@data','@float',
        '@int','@ratio','@strings','@string',
    )

    self.init()
</t>
<t tx="ekr.20110612074140.16419">def get_settings (self,aList,p):

    '''Append all settings names in position p to aList'''

    names = self.settingsNames
    for s in g.splitLines(p.b):
        for s2 in names:
            pat = 'config.%s' % (s2)
            i = s.find(pat)
            if i &gt; -1:
                i = g.skip_ws(s,i+len(pat))
                if g.match(s,i,'('):
                    i += 1
                    s3 = s[i:].strip()
                    for delim in ('"',"'"):
                        if s3.startswith(delim):
                            j = s3.find(delim,1)
                            if j &gt; -1:
                                s4 = s3[1:j]
                                if not s4.startswith('%'):
                                    aList.append(s4)
                                    break
                break
            i = s.find('config.get(')
            if i &gt; -1:
                break # Ignore this.
            i = s.find('config.get(')
            if i &gt; -1:
                aList.append('*** %s' % (s))
                break
</t>
<t tx="ekr.20110612074140.16478">def get_settings_nodes (self,aList,p):

    '''Append all settings names in position p to aList'''

    s = p.h
    for s2 in self.settingsAtNames:
        if s.startswith(s2):
            i = g.skip_ws(s,len(s2))
            if s2 == '@strings':
                j = s.find('=')
                if j &gt; -1:
                    aList.append(s[:j].strip().replace(' ',''))
            else:
                j = g.skip_id(s,i)
                if j &gt; 0:
                    word = s[i:j]
                    # aList.append(word)
                    # aList.append(s.strip())
                    if word:
                        aList.append(s[:j].strip())
                    break
            break
        i = s.find('config.get(')
        if i &gt; -1:
            break # Ignore this.
        i = s.find('config.get(')
        if i &gt; -1:
            aList.append('*** %s' % (s))
            break
</t>
<t tx="ekr.20110617081407.14760">True: Don't add characters during autocompletion that are not part of any computed completion.</t>
<t tx="ekr.20110917104720.9414"></t>
<t tx="ekr.20110917104720.9415"># The names of your classes, one per line.

Commands
vnode
position
</t>
<t tx="ekr.20110917104720.9416"># The names of your typedef types and standard types, one per line.
#
# c-to-python converts::
#
#   new aType(...)
#
# to::
#
#   aType(...)

char
void
short
long
int
double
float
unsigned</t>
<t tx="ekr.20110917104720.9417"># The instance variables (ivars) used by your programs classes.
# This creates a dictionary.  Keys are class names, values are lists of ivars.

# Lines ending with a colon specify keys.
# All other lines are comma-delimited lists of ivars for the last-seen key.
# Trailing commas are ignored.

atFile:
    mCommands, mErrors, mStructureErrors,
    mTargetFileName, mOutputFileName, mOutputStream,
    mStartSentinelComment, mEndSentinelComment, mRoot

vnode:
    mCommands, mJoinList, mIconVal, mTreeID, mT, mStatusBits

tnode:
    mBodyString, mBodyRTF, mJoinHead, mStatusBits, mFileIndex,
    mSelectionStart, mSelectionLength, mCloneIndex,

LeoFrame:
    mNextFrame, mPrevFrame, mCommands,

Commands:
# public
    mCurrentVnode, mLeoFrame, mInhibitOnTreeChanged, mMaxTnodeIndex,
    mTreeCtrl, mBodyCtrl, mFirstWindowAndNeverSaved,
#private
    mTabWidth, mChanged, mOutlineExpansionLevel, mUsingClipboard,
    mFileName, mMemoryInputStream, mMemoryOutputStream, mFileInputStream,
    mInputFile, mFileOutputStream, mFileSize, mTopVnode, mTagList,
    mMaxVnodeTag,
    mUndoType, mUndoVnode, mUndoParent, mUndoBack, mUndoN,
    mUndoDVnodes, mUndoLastChild, mUndoablyDeletedVnode,
</t>
<t tx="ekr.20111003085631.15488"></t>
<t tx="ekr.20111003085631.15489"></t>
<t tx="ekr.20111003085631.15490"></t>
<t tx="ekr.20111003104518.15499"></t>
<t tx="ekr.20111003130143.15561">    **Important**: these nodes **only** specify fonts used by Leo's syntax colorizer.
    
    To set fonts in Leo's widgets, change Leo's master style sheet::
        
        @data qt-gui-plugin-style-sheet 
    
    Valid values for the body of @font nodes::
        
        family: a font family name
        size:   an integer
        weight: bold, normal, None
        slant: roman, italic, None
    
    Use the show-fonts command to pick fonts, then copy the values shown by the
    show-fonts command to the values here.
</t>
<t tx="ekr.20111004182631.15533"></t>
<t tx="ekr.20111004182631.15534">True:  Leo colors C language comments in cweb mode as black with LaTeX keywords highlighted.
Flase: Leo colors C language comments in cweb mode as comments (default red).

Note: this setting does not affect how Leo colors noweb section references and defintions.
</t>
<t tx="ekr.20111004182631.15535">True:  Leo colors @space, @* and @** sections in cweb mode as black with LaTeX keywords highlighted.
False: Leo colors @space, @* and @** sections in cweb mode as comments (default is red).

Note: this setting does not affect how Leo colors noweb section references and defintions.
</t>
<t tx="ekr.20111004182631.15536">True:  Leo colors @directives when @language plain is in effect.
False: Leo colors everything black when @language plain is in effect.
</t>
<t tx="ekr.20111004182631.15537">True: Underline undefined section names

Only functional if use_hyperlinks = 0

</t>
<t tx="ekr.20111004182631.15538">True:  underline "live" links.
False: (recommended): Underline undefined section names.
</t>
<t tx="ekr.20111004182631.15542">The color of text in doc parts.
</t>
<t tx="ekr.20111004182631.15546">The color of Leo keywords such as @ignore, @color, etc.
</t>
<t tx="ekr.20111004182631.15548">The color of name in &lt; &lt; name &gt; &gt; when name is defined.
</t>
<t tx="ekr.20111004182631.15549">The background color that represents spaces when Show Invisibles mode is in effect.

gray80: #CCCCCC
gray90: #E5E5E5
</t>
<t tx="ekr.20111004182631.15550">The foreground color that represents tabs when Show Invisibles mode is in effect.

gray80: #CCCCCC
gray90: #E5E5E5
</t>
<t tx="ekr.20111004182631.15552">The color of name in &lt;&lt; name &gt;&gt; when name is undefined.
</t>
<t tx="ekr.20111006212449.11850">'''Check the consistency of all settings.'''

class Controller:
    @others

Controller(c).run()</t>
<t tx="ekr.20111006212449.11851">def __init__ (self,c):
    self.c = c

    self.errors = 0

    # Commanders.
    self.core = None # Commander for leoPy.leo.
    self.plugins = None # Commander for leoPlugins.leo.
    self.settings = None # Commander for leoSettings.leo.
</t>
<t tx="ekr.20111006212449.11852">def check (self,configs_d,settings_d):

    table = ('Bool','Color','Int','Float',# 'Font',
        'Ratio','Path','String',
    )
    format = '%40s %s'

    if 1: # Less important: print missing settings.
        for kind in table:
            config_key = 'get%s' % kind
            settings_key = '@%s' % kind.lower()
            config_list = configs_d.get(config_key,[])
            settings_list = settings_d.get(settings_key,[])
            munged_config_list =   [self.munge(s) for s in config_list]
            munged_settings_list = [self.munge(s) for s in settings_list]
            print('\nmissing %s settings...' % settings_key)
            missing = set()
            for s in munged_config_list:
                # Ignore plugins settings.
                if s not in munged_settings_list:
                    missing.add(s)
            if missing:
                print(format % ('Canonical','Actual'))
                print(format % ('=' * len('Canonical'),'=' * len('Actual')))
                for s in sorted(list(missing)):
                    self.print_missing(format,s,
                        config_list,settings_list,
                        munged_config_list,munged_settings_list)
    # More important: print missing calls to c.config.getX
    if 1:
        for kind in table:
            config_key = 'get%s' % kind
            settings_key = '@%s' % kind.lower()
            config_list = configs_d.get(config_key,[])
            settings_list = settings_d.get(settings_key,[])
            munged_config_list =   [self.munge(s) for s in config_list]
            munged_settings_list = [self.munge(s) for s in settings_list]
            print('\nmissing config.%s calls...' % config_key)
            missing = set()
            for s in munged_settings_list:
                if s not in munged_config_list:
                    missing.add(s)
            if missing:
                print(format % ('Canonical','Actual'))
                print(format % ('=' * len('Canonical'),'=' * len('Actual')))
                for s in sorted(list(missing)):
                    self.print_missing(format,s,
                        settings_list,config_list,
                        munged_settings_list,munged_config_list)</t>
<t tx="ekr.20111006212449.11853">def error (self,s):

    print(s)
    self.errors += 1
</t>
<t tx="ekr.20111006212449.11854">def get_commanders (self):

    '''Open files as needed and set the commander ivars.'''

    def open_commander(fn):
        c = g.openWithFileName(fn,old_c=self.c,gui=g.app.nullGui)
        if c: return c
        else:
            self.error('not found: %s' % fn)

    self.core = open_commander(
        g.os_path_join(g.app.loadDir,'..','core','leoPy.leo'))

    self.plugins = open_commander(
        g.os_path_join(g.app.loadDir,'..','plugins','leoPlugins.leo'))

    self.settings = open_commander(
        g.os_path_join(g.app.loadDir,'..','config','leoSettings.leo'))

    # g.trace('\n%s\n%s\n%s' % (self.core,self.plugins,self.settings))
</t>
<t tx="ekr.20111006212449.11855">def get_configs(self):

    '''Return a dict containing a representation
    of all calls to x.config.getX.
    '''

    d = {}

    for c in (self.core,self.plugins):
        print('scanning: %s' % c.shortFileName())
        self.get_configs_from_outline(c,d)

    return d</t>
<t tx="ekr.20111006212449.11856">def get_configs_from_outline (self,c,d):

    '''Scan the outline for all calls to x.config.getX
    and add items to d.
    '''

    trace = False
    for p in c.all_positions():
        self.scan_for_configs(p,d)
    if trace:
        for key in sorted(list(d.keys())):
            print(key)
            aList = d.get(key)
            for name in sorted(aList):
                print('  ' + name)
    return d</t>
<t tx="ekr.20111006212449.11857">def scan_for_configs (self,p,d):

    '''Scan the body text of p, finding all calls to getX.'''
    kinds = ('getBool','getColor','getInt','getFloat',
        # '@font', # special case.
        'getRatio','getPath','getString',
    )
    i,s = 0,p.b
    while i &lt; len(s):
        progress = i
        ch = s[i]
        if (
            ch == '@' and
            (g.match(s,i,'@ ') or g.match(s,i,'@\n')) and
            (i == 0 or s[i-1] == '\n')
        ):
            i = s.find('\n@c',i)
            if i == -1: break
        elif ch == '#':
            i = g.skip_to_end_of_line(s,i)
        elif ch in ('"',"'"):
            i = g.skip_string(s,i,verbose=False)
        elif ch == '_' or ch.isalpha():
            j = g.skip_id(s,i)
            kind = s[i:j]
            if kind in kinds:
                i = g.skip_ws(s,j)
                if g.match(s,i,'('):
                    i = g.skip_ws(s,i+1)
                    if g.match(s,i,'"') or g.match(s,i,"'"):
                        j = g.skip_string(s,i)
                        name = s[i+1:j-1]
                        aList = d.get(kind,[])
                        if name not in aList:
                            aList.append(name)
                        d [kind] = aList
            i = j
        else:
            i += 1
        assert progress &lt; i
    return d</t>
<t tx="ekr.20111006212449.11858">def get_settings (self):

    '''Return a dict containing a representation
    of all settings in leoSettings.leo.
    '''

    trace = False
    c,d = self.settings,{}

    print('scanning: %s' % c.shortFileName())

    settings_node = g.findNodeAnywhere(c,'@settings')
    if not settings_node:
        return self.error('no @settings node')

    for p in settings_node.subtree():
        if self.is_setting(p):
            kind,name = self.parse_setting(p)
            if name:
                # name = self.munge(name)
                aList = d.get(kind,[])
                if name not in aList:
                    aList.append(name)
                d [kind] = aList
            else:
                self.error('no name for %s' % (kind))

    if trace:
        keys = list(d.keys())
        for key in sorted(keys):
            print(key)
            aList = d.get(key)
            for name in sorted(aList):
                print('  ' + name)

    return d</t>
<t tx="ekr.20111006212449.11859">def is_setting (self,p):

    # For now, these are enough
    table = (
        '@bool','@color','@int','@float',
        # '@font', # special case.
        '@ratio','@path','@string',
    )

    for s in table:
        if g.match_word(p.h,0,s):
            return True
    return False</t>
<t tx="ekr.20111006212449.11860">def parse_setting (self,p):

    s = p.h
    assert s[0] == '@'
    i = g.skip_id(s,1)
    kind = s[:i]
    assert kind
    i = g.skip_ws(s,i)
    j = g.skip_id(s,i,chars='-')
    name = s[i:j]
    return kind,name</t>
<t tx="ekr.20111006212449.11861">def munge (self,s):

    '''Return the canonicalized name for settings and arguments to c.config.getX.'''

    s = s.replace('-','').replace('_','').lower()
    return g.toUnicode(s)
</t>
<t tx="ekr.20111006212449.11862">def run(self):

    import os ; os.system('cls')

    self.get_commanders()
    configs = self.get_configs()
    settings = self.get_settings()

    if self.errors == 0:
        self.check(configs,settings)

    g.trace('done')</t>
<t tx="ekr.20111007043902.15697">def print_missing(self,format,munged_s,in_list,out_list,munged_in_list,munged_out_list):

    '''Print the canonical name, followed by the list of names that match.'''
    assert munged_s in munged_in_list,munged_s
    assert munged_s not in munged_out_list,munged_s
    if 0: # These should not be necessary.  Something is wrong.
        # Ignore plugins settings and global switches.
        for prefix in ('color','datenodes','http','opml','rst3','todo','trace','vim','zodb'):
            if munged_s.startswith(prefix):
                return
    # Ignore color settings.  They are handled differently...
    for suffix in ('color',):
        if munged_s.endswith(suffix):
            return
    match_list = [s for s in in_list if self.munge(s) == munged_s]
    print(format % (munged_s,match_list))</t>
<t tx="ekr.20111017082630.16080">'''This script reports commands that exist in some but not all key- binding
sets. setNames is a list of the roots of all such sets.'''

import leoConfig
import leoTest

parser = leoConfig.SettingsTreeParser(c)

# Add these as required to handle commands defined by plugins.
optionalCommandPrefixes = ['group-operations']
optionalCommandNames = [
    # These are the command names as defined by plugins.
    # LeoSlideShows.leo defines buttons whose commands do not end in '-command'.
    'next-slide-command','next-slide-show-command',
    'prev-slide-command','prev-slide-show-command',
    # The ipython plugin.
    'start-ipython','get-ipython-results','push-to-ipython',
]

setNames = []
setsDict = {} # keys are set names, values are dicts of command names.
shortcutsDict = {}

@others

main()
</t>
<t tx="ekr.20111017082630.16081">def defineSetNames():

    global setNames

    if 1:
        setNames = []
        for p in c.allNodes_iter():
            h = p.headString()
            if h.startswith('@keys'):
                h = h[5:].strip()
                if h not in setNames:
                    setNames.append(h)
        g.es('Found these sets...')
        for setName in setNames:
            g.es_print('  %s' % str(setName))
    else:
        setNames = [
            'Default Emacs shortcuts',
            'Legacy Leo bindings',
            'Legacy Leo shortcuts with important Emacs bindings',
            'No bindings',
            'EKR bindings: a mix',
            'EKR bindings: Mode-oriented',
        ]

    setNames.sort()
</t>
<t tx="ekr.20111017082630.16082">def doSet(p,name):

    global shortcutsDict

    shortcutsDict = {}

    for p in p.subtree_iter():
        if p.headString().startswith('@shortcuts'):
            doShortcuts(p,name)
</t>
<t tx="ekr.20111017082630.16083">def doShortcuts(p,setName):

    global parser,setsDict,shortcutsDict

    d = setsDict.get(setName,{})
    s = p.bodyString()
    lines = g.splitLines(s)
    for line in lines:
        line = line.strip()
        if line and not line.startswith('#'):
            commandName,bunch = parser.parseShortcutLine('test',line)
            if not bunch:
                g.es_print('In %s:\nmissing "=" in shortcut line:%s' % (
                    p.headString(),repr(line)),color='red')
            else:
                # Having multiple shortcuts for a command if fine,
                # But having multiple commands for a shortcut is not.
                shortcut = bunch and bunch.val
                pane = bunch and bunch.pane
                if shortcut not in (None,'None','none'):
                    aList = shortcutsDict.get(shortcut,[])
                    if aList:
                        for commandName2,pane2 in aList:
                            if pane == pane2:
                                g.es_print('duplicate shortcut %s in set %s: previous command: %s' % (
                                    shortcut,setName,commandName2),color='red')
                        else:
                            aList.append((commandName,pane),)
                    else:
                        shortcutsDict [shortcut] = [(commandName,pane),]

                data = d.get(commandName)
                if data:
                    shortcut2,pane2 = data
                    if shortcut == shortcut2 and pane == pane2:
                        g.es_print('duplicate %s in set %s' % (
                            commandName,setName),color='red')
                else:
                    data = shortcut,pane
                    d[commandName] = data

    setsDict[setName] = d
</t>
<t tx="ekr.20111017082630.16084">def checkSets():

    global setNames, optionalCommandPrefixes, optionalCommandNames

    # Compute the union of all the command names.
    allNames = {}
    for setName in setNames:
        d = setsDict.get(setName)
        if d:
            for key in d.keys():
                allNames[key] = key
        else:
            g.es_print('No setsDict for %s' % (repr(setName)),color='red')

    k = c.keyHandler
    keys = allNames.keys()
    keys.sort()

    # Warn about missing names.
    for setName in ('No bindings',): # setNames:
        d = setsDict.get(setName)
        if not d:
            g.es_print("'@keys No bindings' not found",color='red')
        for key in keys:
            if key not in ('none','None',None) and key not in d.keys():
                # Don't warn about missing 'enter-xxx-mode' commands.
                if (
                    not (key.startswith('enter-') and key.endswith('-mode')) and
                    not (key.startswith('press-') and key.endswith('-button'))
                ):
                    g.es_print('%s is missing %-35s = None' % (setName,repr(key)))

    # Warn about undefined commands.
    for key in keys:
        if not c.commandsDict.get(key):
            ok = False
            # full-command and quick command are weird special cases.
            if key not in ('None',None,'full-command','quick-command'):
                # Don't warn about missing 'enter-xxx-mode' commands.
                if key.startswith('enter-') and key.endswith('-mode'):
                    ok = True
                elif key.startswith('press-') and key.endswith('-button'):
                    ok = True
                for prefix in optionalCommandPrefixes:
                    if key.startswith(prefix):
                        ok = True
                for optionalCommand in optionalCommandNames:
                    if key == optionalCommand:
                        ok = True
                if not ok:
                    g.es_print('Undefined command name: %s' % (key))
</t>
<t tx="ekr.20111017082630.16085">def main ():

    global setNames
    defineSetNames()

    g.es_print('-' * 40)
    seen = {}
    for p in c.allNodes_iter():
        h = p.headString()
        if h.startswith('@keys'):
            h = h[5:].strip()
            if not seen.get(h):
                seen[h] = True
                doSet(p,h)
    checkSets()
    g.es('Check Bindings done')
</t>
<t tx="ekr.20111017082630.16086"></t>
<t tx="ekr.20111024091133.16650"></t>
<t tx="ekr.20111024091133.16651">These @color names map directly to the constants defined in each .py file in the leo/modes folder.

There is a script to generate these .py files directly from the jEdit .xml syntax coloring files.

These names can't be changed.  Leo's colorizing code leoColorizer.py uses these names to init various data structures.  The names are bound (in the modes/*.py files) to arguments to the pattern matches in leoColorizer.py.

Check the .py file in leo/modes for your langauge to see which names are actually used.</t>
<t tx="ekr.20111024091133.16671"></t>
<t tx="ekr.20111026083456.16490"></t>
<t tx="ekr.20111026083456.16491">import glob

path = g.os_path_finalize_join(
    g.app.loadDir,'..','plugins','*.py')

aList = glob.glob(path)
aList.sort()

for fn in aList:
    print(g.shortFileName(fn))</t>
<t tx="ekr.20111029055127.16614"># lowercase xml tags, one per line.

html
body
head
div
table
</t>
<t tx="ekr.20111029055127.16616"># lowercase html tags, one per line.

a
abbr
acronym
address
applet
area
b
base
basefont
bdo
big
blockquote
body
br
button
caption
center
cite
code
col
colgroup
dd
del
dfn
dir
div
dl
dt
em
fieldset
font
form
frame
frameset
head
h1
h2
h3
h4
h5
h6
hr
html
i
iframe
img
input
ins
kbd
label
legend
li
link
map
menu
meta
noframes
noscript
object
ol
optgroup
option
p
param
pre
q
s
samp
script
select
small
span
strike
strong
style
sub
sup
table
tbody
td
textarea
tfoot
th
thead
title
tr
tt
u
ul
var</t>
<t tx="ekr.20111109104336.12503">New in Leo 4.9.1.

True (Recommended):
    An excellent, subliminal, improvement.
    The contract-or-goto-parent (Alt-RtArrow) contracts all
    children of the to-be-selected parent.
</t>
<t tx="ekr.20111115083813.12518"></t>
<t tx="ekr.20120205022040.15410">These are needed to handle shortcuts for the find panel!</t>
<t tx="ekr.20120205022040.15411">This setting has effect only on MacOS.

When True, bindings that appear to specify the control key actually specify the command (clover) key.</t>
<t tx="ekr.20120305084218.11271"># Unbound F-Keys cause problems on Ubuntu
help            = F1
# find-prev     = F2    # Set elsewhere
# find-next     = F3    # Set elsewhere
do-nothing      = F4
do-nothing      = F5
do-nothing      = F6
spell-tab-open  = F7
do-nothing      = F8
do-nothing      = F9
do-nothing      = F10
help-for-command= F11
help-for-python = F12

do-nothing              = Ctrl-F1
do-nothing              = Ctrl-F2
double-click-icon-box   = Ctrl-F3
# close-window          = Ctrl-F4 # Set in File Commands.
do-nothing              = Ctrl-F5
do-nothing              = Ctrl-F6
do-nothing              = Ctrl-F7
do-nothing              = Ctrl-F8
do-nothing              = Ctrl-F9
do-nothing              = Ctrl-F10
do-nothing              = Ctrl-F11
do-nothing              = Ctrl-F12

do-nothing = Shift-F1
do-nothing = Shift-F2
do-nothing = Shift-F3
do-nothing = Shift-F4
do-nothing = Shift-F5
do-nothing = Shift-F6
do-nothing = Shift-F7
do-nothing = Shift-F8
do-nothing = Shift-F9
do-nothing = Shift-F10
do-nothing = Shift-F11
do-nothing = Shift-F12</t>
<t tx="ekr.20120926072255.11432"></t>
<t tx="ekr.20120928142052.11488"></t>
<t tx="ekr.20130503155210.16364">\@menuat modifies the menu tree created by \@menus. This allows settings in
myLeoSettings.leo to change menues without copying the entire menu tree from
leoSettings.leo. This ensures you don’t miss out when new things are added in
the @menus in leoSettings.leo, as you would if you replaced the @menus in
leoSettings.leo with one in myLeoSettings.leo.

\@menuat should occur in a \@settings tree, but not as a descendant of a \@menus
tree. Its children are \@menu and \@item nodes as for the
@menu setting.

The @menuat setting has 2-3 parameters in its head text.

    @menuat *&lt;path&gt;* *&lt;action&gt;* *[clipboard]*

The path argument specifies a **target** in the menu tree as defined by
\@menus and modified by earlier @menuat settings. The path takes the form::

    /entry1/entry2/entry3
    
Each entry is the **cleaned** name of a menu or item. Cleaned names are a
name with all text except a-z and 0-9 removed and upper case letters converted
to lower case. For example, specify::

    Outline-&gt;Move-&gt;Move Down
    
as::
    
     /outline/move/movedown

The action argument specifies what the menu item does. There are 5 available
actions:

- before: Insert items and sub menus immediately before the target.
- after:  Insert items and sub menus immediately after the target.
- append: Append items and sub menus at the end of the target menu or item.
- cut:    Remove the target from the menu tree and save it to an internal clipboard.
- copy:   Copy the target to an internal clipboard. Descendants of the @menuat setting are ignored.

The cut and copy arguments ignore descendants of the @menuat setting .

The optional clipboard argument modifies the action of the before, after, and
append actions. By default these actions insert the menus and items supplied as
descendants of the @menuat setting. If you specify “clipboard” (without the
quotes) as the source, the contents of the clipboard from a previous cut or copy
action will be used instead.</t>
<t tx="ekr.20130705090546.10662">The maximum number of lines to color at once, when NEW_COLORER is True</t>
<t tx="ekr.20130705090546.10663">The delay, in milliseconds, to wait before resuming recoloring, when NEW_COLORER is True.</t>
<t tx="ekr.20130924110246.13745">Scripting abbreviations will be enabled if:
    
1. @bool enable-abbreviations = True
2. *either* this setting or @bool scripting-at-script-nodes = True</t>
<t tx="ekr.20131003040744.17561">find-quick-selected = Ctrl-Shift-F
vr-toggle = Alt-0</t>
<t tx="ekr.20131007055150.13034"></t>
<t tx="ekr.20131008181812.17533">False: disable all drag and drop operations in the outline.</t>
<t tx="ekr.20131009050634.17656"></t>
<t tx="ekr.20131027064821.18683"></t>
<t tx="ekr.20131112150804.18737">True: the execute-script command executes the entire body, even if text is selected.</t>
<t tx="ekr.20131112161153.4420">True: use built-in vim emulation.</t>
<t tx="ekr.20131115075142.18226">\@outline-data nodes and their descendants create settings whose values are
entire trees. Here's how it works:

The *value* returned by c.config.getOutlineData is the xml string created when
Leo pastes the @outline-data node to the clipboard. As a result, Leo can use all
the standard configuration code for @outline-data! Settings in a local file
override myLeoSettings.leo settings, which override settings in leoSettings.leo.

To retrive the value of an @outline-data setting::

    s = c.config.getOutlineData(setting-name)
    c.fileCommands.leo_file_encoding='utf-8' p =
    c.pasteOutline(s=tree_s,redrawFlag=False,undoFlag=False)
    
This makes the outline available for further processing.

For example, to handle tree-valued abbreviations, the inint code in the
abbrevCommandsClass pastes the outline into the present outline, uses the pasted
outline to discover tree-valued abbreviations, and then *deletes* the tree.

</t>
<t tx="ekr.20131119143342.18879">@language rest

Please *do not* change this style sheet, nor any of its descendants.

Instead, copy the *settings* you want to change from the node::

    Qt Gui settings

to myLeoSettings.leo.

Advanced users may create an additional style sheet, called::

    @data qt-gui-user-style-sheet

in myLeoSettings.leo.  But most users will never need to do this.
</t>
<t tx="ekr.20131119143342.20107">True: start-find command puts focus in minibuffer.
False: start-find commands puts focus in Find panel.</t>
<t tx="ekr.20131119143342.20108"></t>
<t tx="ekr.20131213135427.21826"></t>
<t tx="ekr.20131213135427.21827"></t>
<t tx="ekr.20131213135427.21828"></t>
<t tx="ekr.20131213135427.21829"></t>
<t tx="ekr.20131213135427.21830"></t>
<t tx="ekr.20131213135427.21831"># 文件
# The first non-blank, non-comment body line is an alternate menu name.
#
# A placeholder for the actual menu.
# Leo's init code populates this menu as a special case.</t>
<t tx="ekr.20131213135427.21832"></t>
<t tx="ekr.20131213135427.21833"></t>
<t tx="ekr.20131213135427.21834">&amp;Save...</t>
<t tx="ekr.20131213135427.21835">Save &amp;As...</t>
<t tx="ekr.20131213135427.21836">Save As &amp;Unzipped...</t>
<t tx="ekr.20131213135427.21837">Save As &amp;Zipped...</t>
<t tx="ekr.20131213135427.21838">Save &amp;To...</t>
<t tx="ekr.20131213135427.21839">&amp;Revert To Saved</t>
<t tx="ekr.20131213135427.21841"></t>
<t tx="ekr.20131213135427.21842"></t>
<t tx="ekr.20131213135427.21843"></t>
<t tx="ekr.20131213135427.21844">&amp;Compare Leo Files...</t>
<t tx="ekr.20131213135427.21845"></t>
<t tx="ekr.20131213135427.21846"></t>
<t tx="ekr.20131213135427.21847"></t>
<t tx="ekr.20131213135427.21848">Read @auto Nodes</t>
<t tx="ekr.20131213135427.21849">Read @&lt;file&gt; Nodes</t>
<t tx="ekr.20131213135427.21850">Read @shadow Nodes</t>
<t tx="ekr.20131213135427.21851"></t>
<t tx="ekr.20131213135427.21852"></t>
<t tx="ekr.20131213135427.21853"></t>
<t tx="ekr.20131213135427.21854">Write @auto Nodes</t>
<t tx="ekr.20131213135427.21855">Write @&lt;file&gt; Nodes</t>
<t tx="ekr.20131213135427.21856">Write @shadow Nodes</t>
<t tx="ekr.20131213135427.21857"></t>
<t tx="ekr.20131213135427.21858">Write Dirty @auto Nodes</t>
<t tx="ekr.20131213135427.21859">Write Dirty @&lt;file&gt; Nodes</t>
<t tx="ekr.20131213135427.21860">Write Dirty @shadow Nodes</t>
<t tx="ekr.20131213135427.21861">Write Missing @&lt;file&gt; Nodes</t>
<t tx="ekr.20131213135427.21862">Import &amp;Any File...</t>
<t tx="ekr.20131213135427.21863"></t>
<t tx="ekr.20131213135427.21864">Export &amp;Outline...</t>
<t tx="ekr.20131213135427.21865">&amp;Flatten Selected Outline...</t>
<t tx="ekr.20131213135427.21866">Outline To &amp;CWEB...</t>
<t tx="ekr.20131213135427.21867">Outline To &amp;Noweb...</t>
<t tx="ekr.20131213135427.21868">&amp;Remove Sentinels...</t>
<t tx="ekr.20131213135427.21869">&amp;Weave...</t>
<t tx="ekr.20131213135427.21871">&amp;CheatSheet.leo</t>
<t tx="ekr.20131213135427.21872">Leo&amp;Docs.leo</t>
<t tx="ekr.20131213135427.21873">leo&amp;Plugins.leo</t>
<t tx="ekr.20131213135427.21874">&amp;quickstart.leo</t>
<t tx="ekr.20131213135427.21875">scr&amp;ipts.leo</t>
<t tx="ekr.20131213135427.21876"></t>
<t tx="ekr.20131213135427.21877">E&amp;xit</t>
<t tx="ekr.20131213135427.21878"></t>
<t tx="ekr.20131213135427.21879">Can't Undo</t>
<t tx="ekr.20131213135427.21880">Can't Redo</t>
<t tx="ekr.20131213135427.21881"></t>
<t tx="ekr.20131213135427.21882">Cu&amp;t</t>
<t tx="ekr.20131213135427.21883">Cop&amp;y</t>
<t tx="ekr.20131213135427.21884">&amp;Paste</t>
<t tx="ekr.20131213135427.21885"></t>
<t tx="ekr.20131213135427.21886">Select &amp;All</t>
<t tx="ekr.20131213135427.21889"></t>
<t tx="ekr.20131213135427.21890"></t>
<t tx="ekr.20131213135427.21892"></t>
<t tx="ekr.20131213135427.21893"></t>
<t tx="ekr.20131213135427.21894"></t>
<t tx="ekr.20131213135427.21895"></t>
<t tx="ekr.20131213135427.21896"></t>
<t tx="ekr.20131213135427.21897"></t>
<t tx="ekr.20131213135427.21901"></t>
<t tx="ekr.20131213135427.21902"></t>
<t tx="ekr.20131213135427.21903"></t>
<t tx="ekr.20131213135427.21904"></t>
<t tx="ekr.20131213135427.21905"></t>
<t tx="ekr.20131213135427.21906"></t>
<t tx="ekr.20131213135427.21907"></t>
<t tx="ekr.20131213135427.21908"></t>
<t tx="ekr.20131213135427.21910"></t>
<t tx="ekr.20131213135427.21912">Show In&amp;visibles</t>
<t tx="ekr.20131213135427.21913"></t>
<t tx="ekr.20131213135427.21914"></t>
<t tx="ekr.20131213135427.21915"></t>
<t tx="ekr.20131213135427.21918"></t>
<t tx="ekr.20131213135427.21919"></t>
<t tx="ekr.20131213135427.21920"></t>
<t tx="ekr.20131213135427.21921"></t>
<t tx="ekr.20131213135427.21923"></t>
<t tx="ekr.20131213135427.21925"></t>
<t tx="ekr.20131213135427.21927"></t>
<t tx="ekr.20131213135427.21928"></t>
<t tx="ekr.20131213135427.21929"></t>
<t tx="ekr.20131213135427.21930"></t>
<t tx="ekr.20131213135427.21931"></t>
<t tx="ekr.20131213135427.21932"></t>
<t tx="ekr.20131213135427.21933"></t>
<t tx="ekr.20131213135427.21934"></t>
<t tx="ekr.20131213135427.21935"></t>
<t tx="ekr.20131213135427.21936"></t>
<t tx="ekr.20131213135427.21938"></t>
<t tx="ekr.20131213135427.21939"></t>
<t tx="ekr.20131213135427.21940"></t>
<t tx="ekr.20131213135427.21941"></t>
<t tx="ekr.20131213135427.21943"></t>
<t tx="ekr.20131213135427.21944"></t>
<t tx="ekr.20131213135427.21945"></t>
<t tx="ekr.20131213135427.21946"></t>
<t tx="ekr.20131213135427.21951"></t>
<t tx="ekr.20131213135427.21953">Open &amp;LeoSettings.leo</t>
<t tx="ekr.20131213135427.21954">Open &amp;myLeoSettings.leo
</t>
<t tx="ekr.20131213135427.21955">&amp;Select Local @settings tree</t>
<t tx="ekr.20131213135427.21957"></t>
<t tx="ekr.20131213135427.21958"></t>
<t tx="ekr.20131213135427.21959"></t>
<t tx="ekr.20131213135427.21960"></t>
<t tx="ekr.20131213135427.21961"></t>
<t tx="ekr.20131213135427.21962"></t>
<t tx="ekr.20131213135427.21963"></t>
<t tx="ekr.20131213135427.21964"></t>
<t tx="ekr.20131213135427.21965">Pas&amp;te Node As Clone</t>
<t tx="ekr.20131213135427.21966"></t>
<t tx="ekr.20131213135427.21968"></t>
<t tx="ekr.20131213135427.21969"></t>
<t tx="ekr.20131213135427.21970"></t>
<t tx="ekr.20131213135427.21971"></t>
<t tx="ekr.20131213135427.21972"></t>
<t tx="ekr.20131213135427.21973"></t>
<t tx="ekr.20131213135427.21974"></t>
<t tx="ekr.20131213135427.21975">D&amp;e-Hoist</t>
<t tx="ekr.20131213135427.21977"></t>
<t tx="ekr.20131213135427.21978"></t>
<t tx="ekr.20131213135427.21979"></t>
<t tx="ekr.20131213135427.21983"></t>
<t tx="ekr.20131213135427.21984">This node just keeps track of the accelerators in the siblings.</t>
<t tx="ekr.20131213135427.21985"></t>
<t tx="ekr.20131213135427.21986"></t>
<t tx="ekr.20131213135427.21987"></t>
<t tx="ekr.20131213135427.21988"></t>
<t tx="ekr.20131213135427.21989"></t>
<t tx="ekr.20131213135427.21990"></t>
<t tx="ekr.20131213135427.21991"></t>
<t tx="ekr.20131213135427.21992"></t>
<t tx="ekr.20131213135427.21993"></t>
<t tx="ekr.20131213135427.21994"></t>
<t tx="ekr.20131213135427.21995"></t>
<t tx="ekr.20131213135427.21996"></t>
<t tx="ekr.20131213135427.21997"></t>
<t tx="ekr.20131213135427.21998"></t>
<t tx="ekr.20131213135427.21999"></t>
<t tx="ekr.20131213135427.22000"></t>
<t tx="ekr.20131213135427.22001"></t>
<t tx="ekr.20131213135427.22002"></t>
<t tx="ekr.20131213135427.22003"></t>
<t tx="ekr.20131213135427.22004"></t>
<t tx="ekr.20131213135427.22005"></t>
<t tx="ekr.20131213135427.22006"></t>
<t tx="ekr.20131213135427.22007"></t>
<t tx="ekr.20131213135427.22008">Move &amp;Down</t>
<t tx="ekr.20131213135427.22009">Move &amp;Left</t>
<t tx="ekr.20131213135427.22010">Move &amp;Right</t>
<t tx="ekr.20131213135427.22011">Move &amp;Up</t>
<t tx="ekr.20131213135427.22012"></t>
<t tx="ekr.20131213135427.22013"></t>
<t tx="ekr.20131213135427.22014"></t>
<t tx="ekr.20131213135427.22015"></t>
<t tx="ekr.20131213135427.22016"></t>
<t tx="ekr.20131213135427.22017"></t>
<t tx="ekr.20131213135427.22018"></t>
<t tx="ekr.20131213135427.22019"></t>
<t tx="ekr.20131213135427.22020"></t>
<t tx="ekr.20131213135427.22021"></t>
<t tx="ekr.20131213135427.22022"></t>
<t tx="ekr.20131213135427.22023">Go To &amp;First Node</t>
<t tx="ekr.20131213135427.22024">Go To First V&amp;isible</t>
<t tx="ekr.20131213135427.22025">Go To First Si&amp;bling</t>
<t tx="ekr.20131213135427.22026"></t>
<t tx="ekr.20131213135427.22027">Go To Next C&amp;hanged</t>
<t tx="ekr.20131213135427.22028">Go To Next &amp;Clone</t>
<t tx="ekr.20131213135427.22029">Go To Next &amp;Marked</t>
<t tx="ekr.20131213135427.22030">Go To Next N&amp;ode</t>
<t tx="ekr.20131213135427.22031">Go To Next &amp;Sibling</t>
<t tx="ekr.20131213135427.22032">Go To Next Visibl&amp;e</t>
<t tx="ekr.20131213135427.22033">Go To Next Visite&amp;d</t>
<t tx="ekr.20131213135427.22034"></t>
<t tx="ekr.20131213135427.22035">Go To P&amp;arent</t>
<t tx="ekr.20131213135427.22036"></t>
<t tx="ekr.20131213135427.22037">Go To &amp;Prev Node</t>
<t tx="ekr.20131213135427.22038">Go To P&amp;rev Sibling</t>
<t tx="ekr.20131213135427.22039">Go To Pre&amp;v Visible</t>
<t tx="ekr.20131213135427.22040">Go To Prev Visi&amp;ted</t>
<t tx="ekr.20131213135427.22041"></t>
<t tx="ekr.20131213135427.22042">Go To Last Node</t>
<t tx="ekr.20131213135427.22043">Go To Last Siblin&amp;g</t>
<t tx="ekr.20131213135427.22044">Go To &amp;Last Visible</t>
<t tx="ekr.20131213135427.22045"></t>
<t tx="ekr.20131213135427.22046">Open leo&amp;Plugins.leo</t>
<t tx="ekr.20131213135427.22047">Print Plugins &amp;Info</t>
<t tx="ekr.20131213135427.22048"></t>
<t tx="ekr.20131213135427.22050"></t>
<t tx="ekr.20131213135427.22053"></t>
<t tx="ekr.20131213135427.22059"></t>
<t tx="ekr.20131213135427.22060"></t>
<t tx="ekr.20131213135427.22061"></t>
<t tx="ekr.20131213135427.22062"></t>
<t tx="ekr.20131213135427.22063"></t>
<t tx="ekr.20131213135427.22072"></t>
<t tx="ekr.20131213135427.22078"></t>
<t tx="ekr.20131213135427.22079"></t>
<t tx="ekr.20131213135427.22080"></t>
<t tx="ekr.20131213135427.22081"></t>
<t tx="ekr.20131213135427.22082"></t>
<t tx="ekr.20131213135427.22083"></t>
<t tx="ekr.20131213135427.22084"></t>
<t tx="ekr.20131213135427.22085"></t>
<t tx="ekr.20131213135427.22086"></t>
<t tx="ekr.20131213135427.22087"></t>
<t tx="ekr.20131213135427.22088"></t>
<t tx="ekr.20131213135427.22089"></t>
<t tx="ekr.20131213135427.22090"></t>
<t tx="ekr.20131213135427.22091"></t>
<t tx="ekr.20131213135427.22092"></t>
<t tx="ekr.20131213135427.22093"></t>
<t tx="ekr.20131213135427.22094"></t>
<t tx="ekr.20131213135427.22095"></t>
<t tx="ekr.20131213135427.22096"></t>
<t tx="ekr.20131213135427.22097"></t>
<t tx="ekr.20131213135427.22098"></t>
<t tx="ekr.20131213135427.22099"></t>
<t tx="ekr.20131213135427.22100"></t>
<t tx="ekr.20131213135427.22101"></t>
<t tx="ekr.20131213135427.22102"></t>
<t tx="ekr.20131213135427.22103"></t>
<t tx="ekr.20131213135427.22104"></t>
<t tx="ekr.20131213135427.22105"></t>
<t tx="ekr.20131213135427.22106"></t>
<t tx="ekr.20131213135427.22107"></t>
<t tx="ekr.20131213135427.22108"></t>
<t tx="ekr.20131213135427.22109"></t>
<t tx="ekr.20131213135427.22110"></t>
<t tx="ekr.20131213135427.22111"></t>
<t tx="ekr.20131213135427.22112"></t>
<t tx="ekr.20131213135427.22113"></t>
<t tx="ekr.20131213135427.22114"></t>
<t tx="ekr.20131213135427.22115"></t>
<t tx="ekr.20131213135427.22116"></t>
<t tx="ekr.20131213135427.22117"></t>
<t tx="ekr.20131213135427.22118"></t>
<t tx="ekr.20131213135427.22119"></t>
<t tx="ekr.20131213135427.22120"></t>
<t tx="ekr.20131213135427.22121"></t>
<t tx="ekr.20131213135427.22122"></t>
<t tx="ekr.20131213135427.22123"></t>
<t tx="ekr.20131213135427.22124"></t>
<t tx="ekr.20131213135427.22125"></t>
<t tx="ekr.20131213135427.22126"></t>
<t tx="ekr.20131213135427.22127"></t>
<t tx="ekr.20131213135427.22128">Open External &amp;Debugger</t>
<t tx="ekr.20131213135427.22129">Open &amp;Pdb Debugger</t>
<t tx="ekr.20131213135427.22130"></t>
<t tx="ekr.20131213135427.22131"></t>
<t tx="ekr.20131213135427.22132"></t>
<t tx="ekr.20131213135427.22133"></t>
<t tx="ekr.20131213135427.22134"></t>
<t tx="ekr.20131213135427.22135"></t>
<t tx="ekr.20131213135427.22136"></t>
<t tx="ekr.20131213135427.22139"></t>
<t tx="ekr.20131213135427.22140"></t>
<t tx="ekr.20131213135427.22141"></t>
<t tx="ekr.20131213135427.22148"></t>
<t tx="ekr.20131213135427.22149"></t>
<t tx="ekr.20131213135427.22150"></t>
<t tx="ekr.20131213135427.22151"></t>
<t tx="ekr.20131213135427.22152"></t>
<t tx="ekr.20131213135427.22157"></t>
<t tx="ekr.20131213135427.22158"></t>
<t tx="ekr.20131213135427.22159"></t>
<t tx="ekr.20131213135427.22160"></t>
<t tx="ekr.20131213135427.22177"></t>
<t tx="ekr.20131213135427.22178"></t>
<t tx="ekr.20131213135427.22179"></t>
<t tx="ekr.20131213135427.22180"></t>
<t tx="ekr.20131213135427.22182"></t>
<t tx="ekr.20131213135427.22194"></t>
<t tx="ekr.20131213135427.22195"></t>
<t tx="ekr.20131213135427.22196"></t>
<t tx="ekr.20131213135427.22197"></t>
<t tx="ekr.20131213135427.22198"></t>
<t tx="ekr.20131213135427.22200"></t>
<t tx="ekr.20131213135427.22201"></t>
<t tx="ekr.20131213135427.22202"></t>
<t tx="ekr.20131213135427.22203"></t>
<t tx="ekr.20131213135427.22204"></t>
<t tx="ekr.20131213135427.22205"></t>
<t tx="ekr.20131213135427.22206"></t>
<t tx="ekr.20131213135427.22207"></t>
<t tx="ekr.20131213135427.22208"></t>
<t tx="ekr.20131213135427.22209"></t>
<t tx="ekr.20131213135427.22210"></t>
<t tx="ekr.20131213135427.22211"></t>
<t tx="ekr.20131213135427.22212"></t>
<t tx="ekr.20131213135427.22223"></t>
<t tx="ekr.20131213135427.22224"></t>
<t tx="ekr.20131213135427.22225"></t>
<t tx="ekr.20131213135427.22226"></t>
<t tx="ekr.20131213135427.22229"></t>
<t tx="ekr.20131213135427.22230"></t>
<t tx="ekr.20131213135427.22231"></t>
<t tx="ekr.20131213135427.22232"></t>
<t tx="ekr.20131213135427.22233"></t>
<t tx="ekr.20131213135427.22234"></t>
<t tx="ekr.20131213135427.22235"></t>
<t tx="ekr.20131213135427.22236"></t>
<t tx="ekr.20131213135427.22237"></t>
<t tx="ekr.20131213135427.22238"></t>
<t tx="ekr.20131213135427.22239"></t>
<t tx="ekr.20131213135427.22240"></t>
<t tx="ekr.20131213135427.22241"></t>
<t tx="ekr.20131213135427.22242"></t>
<t tx="ekr.20131213135427.22243"></t>
<t tx="ekr.20131213135427.22244"></t>
<t tx="ekr.20131213135427.22245"></t>
<t tx="ekr.20131213135427.22246"></t>
<t tx="ekr.20131213135427.22247"></t>
<t tx="ekr.20131213135427.22248"></t>
<t tx="ekr.20131213135427.22249"></t>
<t tx="ekr.20131213135427.22258"></t>
<t tx="ekr.20131213135427.22259"></t>
<t tx="ekr.20131213135427.22260"></t>
<t tx="ekr.20131213135427.22261"></t>
<t tx="ekr.20131213135427.22262"></t>
<t tx="ekr.20131213135427.22263"></t>
<t tx="ekr.20131213135427.22264"></t>
<t tx="ekr.20131213135427.22265"></t>
<t tx="ekr.20131213135427.22266"></t>
<t tx="ekr.20131213135427.22267"></t>
<t tx="ekr.20131213135427.22268"></t>
<t tx="ekr.20131213135427.22270"></t>
<t tx="ekr.20131213135427.22271"></t>
<t tx="ekr.20131213135427.22273"></t>
<t tx="ekr.20131213135427.22274"></t>
<t tx="ekr.20131213135427.22275"></t>
<t tx="ekr.20131213135427.22277"></t>
<t tx="ekr.20131213135427.22278"></t>
<t tx="ekr.20131213135427.22280"></t>
<t tx="ekr.20131213135427.22281"></t>
<t tx="ekr.20131213135427.22282"></t>
<t tx="ekr.20131213135427.22283"></t>
<t tx="ekr.20131213135427.22285"></t>
<t tx="ekr.20131213135427.22286"></t>
<t tx="ekr.20131213135427.22287"></t>
<t tx="ekr.20131213135427.22289"></t>
<t tx="ekr.20131213135427.22290"></t>
<t tx="ekr.20131213135427.22291"></t>
<t tx="ekr.20131213135427.22292"></t>
<t tx="ekr.20131213135427.22293"></t>
<t tx="ekr.20131213135427.22294"></t>
<t tx="ekr.20131213135427.22295"></t>
<t tx="ekr.20131213135427.22306"></t>
<t tx="ekr.20131213135427.22308"></t>
<t tx="ekr.20131213135427.22309"></t>
<t tx="ekr.20131213135427.22310"></t>
<t tx="ekr.20131213135427.22311"></t>
<t tx="ekr.20131213135427.22312"></t>
<t tx="ekr.20131213135427.22313"></t>
<t tx="ekr.20131213135427.22314"></t>
<t tx="ekr.20131213135427.22315"></t>
<t tx="ekr.20131213135427.22316"></t>
<t tx="ekr.20131213135427.22317"></t>
<t tx="ekr.20131213135427.22318"></t>
<t tx="ekr.20131213135427.22319"></t>
<t tx="ekr.20131213135427.22320"></t>
<t tx="ekr.20131213135427.22321"></t>
<t tx="ekr.20131213135427.22322"></t>
<t tx="ekr.20131213135427.22323"></t>
<t tx="ekr.20131213135427.22325"></t>
<t tx="ekr.20131213135427.22326"></t>
<t tx="ekr.20131213135427.22327"></t>
<t tx="ekr.20131213135427.22328"></t>
<t tx="ekr.20131213135427.22329"></t>
<t tx="ekr.20131213135427.22330"></t>
<t tx="ekr.20131213135427.22331"></t>
<t tx="ekr.20131213135427.22332"></t>
<t tx="ekr.20131213135427.22333"></t>
<t tx="ekr.20131213135427.22334"></t>
<t tx="ekr.20131213135427.22335"></t>
<t tx="ekr.20131213135427.22336"></t>
<t tx="ekr.20131213135427.22337"></t>
<t tx="ekr.20131213135427.22338"></t>
<t tx="ekr.20131213135427.22340"></t>
<t tx="ekr.20131213135427.22341"></t>
<t tx="ekr.20131213135427.22342"></t>
<t tx="ekr.20131213135427.22343"></t>
<t tx="ekr.20131213135427.22344"></t>
<t tx="ekr.20131213135427.22345"></t>
<t tx="ekr.20131213135427.22346"></t>
<t tx="ekr.20131213135427.22347"></t>
<t tx="ekr.20131213135427.22348"></t>
<t tx="ekr.20131213135427.22349">Text &amp;Tutorials</t>
<t tx="ekr.20131213135427.22350">&amp;Video Tutorials</t>
<t tx="ekr.20131213135427.22353"></t>
<t tx="ekr.20131213135427.22354"></t>
<t tx="ekr.20131213135427.22355"></t>
<t tx="ekr.20131213135427.22356"></t>
<t tx="ekr.20131213135427.22357"></t>
<t tx="ekr.20131213135427.22358"></t>
<t tx="ekr.20131213135427.22359"></t>
<t tx="ekr.20131213135427.22360"></t>
<t tx="ekr.20131213135427.22361"></t>
<t tx="ekr.20131213135427.22362"></t>
<t tx="ekr.20131213135427.22363"></t>
<t tx="ekr.20131215083347.18147"></t>
<t tx="ekr.20131215083347.18148"></t>
<t tx="ekr.20131215083347.18154"></t>
<t tx="ekr.20140718064506.18998"></t>
<t tx="ekr.20140718064506.18999">&amp;Refresh From Disk</t>
<t tx="ekr.20140721165014.19146">This node contains unused key bindings. To make them active, copy them to
your copy of myLeoSettings.leo.
</t>
<t tx="ekr.20140721165014.19147">@nocolor

This setting determines the initial binding for otherwise-unbound keystrokes
when no mode is in effect.  Note: the keyboard-quit command exits all modes.

The valid values are::

ignore:  Leo ignores the key (like Vim).
insert:  Leo inserts the key at the cursor (like Emacs)
overwrite: Leo replaces the character at the cursor.</t>
<t tx="ekr.20140721165014.19148"></t>
<t tx="ekr.20140721165014.19149">abbrev-list                         = None
abort-edit-headline                 = Shift-Esc
about-leo                           = None
add-comments                        = Ctrl-(
abbrev-kill-all                     = None
auto-complete                       = None
back-char                           = Ctrl-b
back-char-extend-selection          = None
back-paragraph                      = Alt-braceleft
back-paragraph-extend-selection     = None
back-sentence                       = Alt-a
back-sentence-extend-selection      = None
back-to-indentation                 = Alt-m
back-word                           = Alt-b          
back-word                           = Ctrl-Left
back-word-extend-selection          = None
backward-delete-char                = Delete
backward-delete-char                = Shift-Delete
backward-kill-paragraph             = None
backward-kill-sentence              = None
backward-kill-word                  = Alt-Delete
beginning-of-buffer                 ! text =  Alt-less
beginning-of-buffer                 ! text = Ctrl-Home
beginning-of-buffer-extend-selection= None
beginning-of-line                   = Alt-Up        
beginning-of-line                   = Ctrl-a
beginning-of-line-extend-selection  = None
capitalize-word                     = Alt-c
cascade-windows                     = None
center-line                         = Alt-s
center-region                       = None
check-outline                       = None
clear-extend-mode                   = None
clear-kill-ring                     = None
clear-recent-files                  = None
clone-node                          = Ctrl-`
close-window                        = Ctrl-F4   # (was Alt-F4) Fixes bug 824087: Alt+F4 is not the same as Alt+F, c
contract-all                        = None      # Alt-- conflicts with negative-arg.
contract-node                       = Alt-[
contract-or-go-left                 = Alt-LtArrow
contract-parent                     = None
convert-all-blanks                  = None
convert-all-tabs                    = None
convert-blanks                      = Shift-Ctrl-B
convert-tabs                        = Shift-Ctrl-J
copy-node                           = Shift-Ctrl-C
copy-text                           = None      # Ctrl-C conflicts with quick-command.
count-region                        = Alt-equal
cut-node                            = Shift-Ctrl-X
cut-text                            = None      # Ctrl-X (possible)
cycle-focus                         = None
dabbrev-completion                  = Alt-Ctrl-slash
dabbrev-expands                     = Alt-slash
de-hoist                            = None
delete-char                         = Ctrl-d
delete-comments                     = Ctrl-)
delete-indentation                  = Alt-asciicircum
delete-node                         = Shift-Ctrl-BkSp
delete-spaces                       = Alt-backslash
demote                              = Ctrl-}
directory-make                      = None
directory-remove                    = None
downcase-region                     = None
downcase-word                       = Alt-l
dump-outline                        = None
edit-headline                       = Ctrl-H
end-edit-headline                   = None             # Esc conflicts with watch-escape.
end-of-buffer                       ! text = Alt-greater
end-of-buffer                       ! text = Ctrl-End
end-of-buffer-extend-selection      ! text = Ctrl-Shift-End
end-of-line                         = Alt-Down      
end-of-line                         = Ctrl-e
end-of-line-extend-selection        = None
equal-sized-panes                   = Alt-Shift-E
exchange-point-mark                 = None  # Should be Ctrl-X Ctrl-X.
execute-script                      = None             # Ctrl-e conflicts with end-of-line
exit-leo                            = Ctrl-Q
exit-named-mode                     = None
expand-all                          = None
expand-and-go-right                 = None
expand-next-level                   = None
expand-node                         = Alt-]
expand-or-go-right                  = Alt-RtArrow
expand-prev-level                   = None
expand-to-level-1                   = None
expand-to-level-2                   = None
expand-to-level-3                   = None
expand-to-level-4                   = None
expand-to-level-5                   = None
expand-to-level-6                   = None
expand-to-level-7                   = None
expand-to-level-8                   = None
expand-to-level-9                   = None
export-headlines                    = None
extend-to-paragraph                 = Alt-h
extract                             = Shift-Ctrl-D
extract-names                       = Shift-Ctrl-N</t>
<t tx="ekr.20140721165014.19150">file-delete                         = None
file-diff-files                     = None
file-insert                         = None
fill-paragraph                      = Alt-q
fill-region                         = None
fill-region-as-paragraph            = None
find-tab-hide                       = None
replace                             = Ctrl-=
replace-all                         = None  # Not recommended to bind this to a shortcut.
replace-then-find                   = Ctrl--
find-next                           = F3
find-prev                           = F2
find-tab-open                       = None
flatten-outline                     = None
flush-lines                         = None
focus-to-body                       = None
focus-to-find                       = None
focus-to-log                        = None
focus-to-minibuffer                 = None
focus-to-tree                       = None
forward-char                        = Ctrl-f
forward-char-extend-selection       = None
forward-paragraph                   = Alt-braceright
forward-paragraph-extend-selection  = None
forward-sentence                    = Alt-e
forward-sentence-extend-selection   = None
forward-word                        = Alt-f
forward-word                        = Ctrl-Right
forward-word-extend-selection       = None
full-command                        = Alt-x
go-back                             = None
go-forward                          = None
goto-char                           = None
goto-first-node                     = Alt-Shift-G
goto-first-sibling                  = None
goto-last-node                      = Alt-Shift-H
goto-last-sibling                   = None
goto-last-visible-node              = None
goto-line                           = Alt-g
goto-line                           = None         # Emacs version is less powerful than Leo version
goto-next-changed                   = None         # Alt-D conflicts with kill-word
goto-next-clone                     = None         # Removed Alt-N: not useful enough.
goto-next-marked                    = None         # Alt-M conflicts with back-to-indentation.
goto-next-node                      = Alt-Shift-DnArrow
goto-next-sibling                   = Alt-Shift-S
goto-next-visible                   = None         # Alt-DnArrow conflicts with end-of-line.
goto-parent                         = Alt-Shift-P
goto-prev-node                      = Alt-Shift-UpArrow
goto-prev-sibling                   = Alt-Shift-R
goto-prev-visible                   = None         # Alt-UpArrow conflicts with beginning-of-line.
help-for-minibuffer                 = None
spell-tab-hide                      = None
hoist                               = None
iconify-frame                       = Ctrl-z
import-file                         = None
indent-region                       = Alt-Ctrl-backslash
indent-region                       = Ctrl-]
indent-relative                     = None
indent-rigidly                      = None
indent-to-comment-column            = Alt-semicolon
insert-body-time                    = None         # Removed Shift-Ctrl-G: not useful enough.
insert-child                        = None
insert-headline-time                = None         # Removed Shift-Ctrl-H: not useful enough.
insert-newline                      = Ctrl-o
insert-node                         = Ctrl-I
insert-node                         = Insert
insert-node                         = Shift-Insert
insert-parentheses                  = Alt-parenleft
isearch-backward                    = Ctrl-R
isearch-backward-regexp             = Alt-Ctrl-r
isearch-forward                     = Ctrl-S
isearch-forward-regexp              = Alt-Ctrl-s
keep-lines                          = None
keyboard-quit                       = Ctrl-g
kill-line                           = Ctrl-k
kill-paragraph                      = None
kill-region                         = Ctrl-w
kill-region-save                    = Alt-w
kill-sentence                       = Alt-k
kill-word                           = Alt-d
line-number                         = None
mode-help                           = None
move-past-close-extend-selection    = None</t>
<t tx="ekr.20140721165014.19151">mark                            = Ctrl-M
mark-changed-items              = None         # Alt-C: now quick-command.
mark-subheads                   = None         # Alt-S conflicts with center-line.
match-brackets                  = None         # Ctrl-K conflicts with kill-line.
minimize-all                    = None
move-outline-down               = None         # Removed Ctrl-D: no point if other moves are not defined.
move-outline-left               = None         # Removed Ctrl-L: no point if other moves are not defined.
move-outline-right              = None         # Ctrl-R conflicts with search-backward.
move-outline-up                 = None         # Ctrl-U confllicts with universal-argument.
move-past-close                 = Alt-parenright
# negative-argument             = Alt-minus
new                             = None         # Ctrl-n conflicts with next-line.
newline-and-indent              = Ctrl-j
next-line                       = Ctrl-n
next-line-extend-selection      = None
open-leo-docs-leo               = None
open-leo-dist-leo               = None
open-leo-plugins-leo            = None
open-leo-settings-leo           = None
open-scripts-leo                = None
open-offline-tutorial           = None
open-online-home                = None
open-outline                    = None         # Ctrl-O conflicts with insert-newline
open-python-window              = None         # Removed Alt-P: not useful enough.
spell-tab-open                  = None
outline-to-cweb                 = None
outline-to-noweb                = None
paste-node                      = Shift-Ctrl-V
paste-retaining-clones          = None
paste-text                      = None      # Ctrl-V conflicts with scroll-down-page
previous-line                   = Ctrl-p
previous-line-extend-selection  = None
show-bindings                   = None
show-commands                   = None
promote                         = Ctrl-{            
quick-command                   = Ctrl-c
re-search-backward              = None
re-search-forward               = None
read-at-file-nodes              = None
read-outline-only               = None         # Removed Shift-Ctrl-R: not useful enough.
redo                            = None         # Ctrl-Z not defined, so Shift-Ctrl-Z less useful.
rectangle-clear                 = None
rectangle-close                 = None
rectangle-delete                = None
rectangle-kill                  = None
rectangle-open                  = None
rectangle-string                = None
rectangle-yank                  = None
reformat-paragraph              = Shift-Ctrl-P
remove-blank-lines              = None
remove-sentinels                = None
repeat-complex-command          = None
resize-to-screen                = None
reverse-region                  = None
revert                          = None
save-buffers-kill-leo           = None # Should be Ctrl-x Ctrl-c
save-file                       = None         # Ctrl-s conflicts with isearch-forward.
save-file-as                    = Shift-Ctrl-S
save-file-to                    = None
scroll-down-half-page           = None
scroll-down-line                = None
scroll-down-page                = Ctrl-v
scroll-up-half-page             = None
scroll-up-line                  = None
scroll-up-page                  = Alt-v
search-backward                 = None
search-forward                  = None
# select-all                    = Ctrl-a # Was beginning-of-line.
set-colors                      = None
set-comment-column              = None
set-extend-mode                 = None
set-fill-column                 = None
set-fill-prefix                 = None
set-find-everywhere                 = None
set-find-node-only                  = None
set-find-suboutline-only            = None
set-font                        = None
set-command-state               = None
set-insert-state                = None
# set-mark-command              = Ctrl-Shift-at
set-overwrite-state             = None
settings                        = None  # Ctrl-Y conflicts with yank.
shell-command                   = Alt-exclam
shell-command-on-region         = Alt-bar
show-color-names                = None
show-color-wheel                = None
show-fonts                      = None
# show-invisibles               = Alt-V
show-invisibles                 = None  # Alt-V conflicts with scroll-up-page .
sort-children                   = None
sort-columns                    = None
sort-fields                     = None
sort-lines                      = None
sort-siblings                   = Shift-Alt-A  # Alt-A conflicts with back-sentence.
spell-change                    = None
spell-change-then-find          = None
spell-find                      = None
spell-ignore                    = None
split-line                      = Alt-Ctrl-o
suspend                         = None
tabify                          = None
tangle                          = None      
tangle-all                      = None
tangle-marked                   = None
toggle-abbrev-mode              = None
toggle-active-pane              = None      # Ctrl-T conflicts with swap-characters.
toggle-angle-brackets           = None
toggle-extend-mode              = None
toggle-find-ignore-case-option      = None
toggle-find-in-body-option          = None
toggle-find-in-headline-option      = None
toggle-find-mark-changes-option     = None
toggle-find-mark-finds-option       = None
toggle-find-regex-option            = None
toggle-find-word-option             = None
toggle-find-wrap-around-option      = None
toggle-split-direction          = None
transpose-chars                 = Ctrl-t
transpose-lines                 = None
transpose-words                 = Alt-t
undo                            = None         # Ctrl-Z conflicts with suspend.
unindent-region                 = None
# universal-argument            = Ctrl-u
unmark-all                      = None         # Alt-U: conflicts with upcase-word.
untabify                        = None
untangle                        = None         # Removed Shift-Ctrl-U: not useful enough
untangle-all                    = None
untangle-marked                 = None
upcase-region                   = None
upcase-word                     = Alt-u
view-lossage                    = None
weave                           = None
what-line                       = None
word-search-backward            = None
word-search-forward             = None
write-at-file-nodes             = Shift-Ctrl-W
write-dirty-at-file-nodes       = None
write-missing-at-file-nodes     = None
write-outline-only              = None 
yank                            = Ctrl-y
yank-pop                        = Alt-y
zap-to-character                = Alt-z
</t>
<t tx="ekr.20140721165014.19152"></t>
<t tx="ekr.20140721165014.19153">do-nothing = Shift-F1
do-nothing = Shift-F2
do-nothing = Shift-F3
do-nothing = Shift-F4
do-nothing = Shift-F5
do-nothing = Shift-F6
do-nothing = Shift-F7
do-nothing = Shift-F8
do-nothing = Shift-F9
do-nothing = Shift-F10
do-nothing = Shift-F11
do-nothing = Shift-F12
</t>
<t tx="ekr.20140721165014.19154">These are no options for this keyset: we assume other options sets will also be in effect.

**Important**:
    
- With this keyset in effect other binding sets need only specify the commands
that actually have bindings.
    
- These definitions do not interfere with other settings, and do not cause
warnings about duplicate bindings.

- The Check Bindings script only checks for missing bindings in this set.
</t>
<t tx="ekr.20140721165014.19155">abbrev-kill-all                     = None
abbrev-list                         = None
abort-edit-headline                 = None
about-leo                           = None
activate-cmds-menu                  = None
activate-edit-menu                  = None
activate-file-menu                  = None
activate-help-menu                  = None
activate-outline-menu               = None
activate-plugins-menu               = None
activate-window-menu                = None
add-comments                        = None
add-editor                          = None
add-space-to-lines                  = None
add-tab-to-lines                    = None
auto-complete                       = None
auto-complete-force                 = None
back-char                           = None
back-char-extend-selection          = None
back-page                           = None
back-page-extend-selection          = None
back-paragraph                      = None
back-paragraph-extend-selection     = None
back-sentence                       = None
back-sentence-extend-selection      = None
back-to-home                        = None
back-to-indentation                 = None
back-word                           = None
back-word-extend-selection          = None
backward-delete-char                = None
backward-delete-word                = None
backward-find-character                     = None
backward-find-character-extend-selection    = None
backward-kill-paragraph             = None
backward-kill-sentence              = None
backward-kill-word                  = None
beginning-of-buffer                 = None
beginning-of-buffer-extend-selection= None
beginning-of-line                   = None
beginning-of-line-extend-selection  = None
capitalize-word                     = None
cascade-windows                     = None
center-line                         = None
center-region                       = None
chapter-select                      = None
# check-all-python-code             = None
check-outline                       = None
# check-python-code                 = None
# check-spelling                    = None
clean-all-lines                     = None
clean-lines                         = None
clean-recent-files                  = None
clear-extend-mode                   = None
clear-kill-ring                     = None
clear-recent-files                  = None
clear-selected-text                 = None
click-click-box                     = None
click-headline                      = None
click-icon-box                      = None
clone-find-all                      = None
clone-node                          = None
close-window                        = None
# cm-external-editor                  = None
contract-all                        = None
contract-node                       = None
contract-or-go-left                 = None
contract-body-pane                  = None
contract-log-pane                   = None
contract-outline-pane               = None
contract-pane                       = None
contract-parent                     = None
convert-all-blanks                  = None
convert-all-tabs                    = None
convert-blanks                      = None
convert-tabs                        = None
copy-node                           = None
copy-text                           = None
# copy-to-buffer                      = None
count-region                        = None
cut-node                            = None
cut-text                            = None
# cycle-all-focus                     = None
cycle-focus                         = None
cycle-editor-focus                  = None
dabbrev-completion                  = None
dabbrev-expands                     = None
debug                               = None
de-hoist                            = None
delete-char                         = None
delete-comments                     = None
delete-editor                       = None
delete-first-icon                   = None
delete-indentation                  = None
delete-last-icon                    = None
delete-node                         = None
delete-spaces                       = None
delete-word                         = None
demote                              = None
directory-make                      = None
directory-remove                    = None
disable-autocompleter               = None
disable-calltips                    = None
do-nothing                          = None
downcase-region                     = None
downcase-word                       = None
double-click-headline               = None
double-click-icon-box               = None
dump-outline                        = None
edit-headline                       = None
edit-setting                        = None
enable-autocompleter                = None
enable-calltips                     = None
end-edit-headline                   = None
# end-kbd-macro                     = None
end-of-buffer                       = None
end-of-buffer-extend-selection      = None
end-of-line                         = None
end-of-line-extend-selection        = None
equal-sized-panes                   = None
exchange-point-mark                 = None
push-to-ipython                     = None
execute-script                      = None
exit-leo                            = None
exit-named-mode                     = None
expand-all                          = None
expand-and-go-right                 = None
expand-next-level                   = None
expand-node                         = None
expand-or-go-right                  = None
expand-body-pane                    = None
expand-log-pane                     = None
expand-outline-pane                 = None
expand-pane                         = None
expand-prev-level                   = None
# expand-region-abbrevs             = None
expand-to-level-1                   = None
expand-to-level-2                   = None
expand-to-level-3                   = None
expand-to-level-4                   = None
expand-to-level-5                   = None
expand-to-level-6                   = None
expand-to-level-7                   = None
expand-to-level-8                   = None
expand-to-level-9                   = None
export-headlines                    = None
extend-to-line                      = None
extend-to-paragraph                 = None
extend-to-sentence                  = None
extend-to-word                      = None
extract                             = None
extract-names                       = None
# extract-python-method               = None
# extract-section                     = None
</t>
<t tx="ekr.20140721165014.19156">file-delete                         = None
file-diff-files                     = None
file-insert                         = None
fill-paragraph                      = None
fill-region                         = None
fill-region-as-paragraph            = None
find-character                      = None
find-character-extend-selection     = None
find-clone-all                      = None
find-next-clone                     = None
find-next                           = None
find-all                            = None
find-prev                           = None
find-quick-selected                 = None
find-tab-hide                       = None
find-tab-open                       = None
find-word                           = None
find-word-in-line                   = None
flatten-outline                     = None
flush-lines                         = None
focus-to-body                       = None
focus-to-log                        = None
focus-to-find                       = None
focus-to-minibuffer                 = None
focus-to-tree                       = None
forward-char                        = None
forward-char-extend-selection       = None
forward-end-word                    = None
forward-end-word-extend-selection   = None
forward-page                        = None
forward-page-extend-selection       = None
forward-paragraph                   = None
forward-paragraph-extend-selection  = None
forward-sentence                    = None
forward-sentence-extend-selection   = None
forward-word                        = None
forward-word-extend-selection       = None
full-command                        = None
fully-expand-body-pane              = None
fully-expand-log-pane               = None
fully-expand-outline-pane           = None
fully-expand-pane                   = None
gc-collect-garbage                  = None
gc-dump-all-objects                 = None
gc-dump-new-objects                 = None
gc-dump-objects-verbose             = None
gc-show-summary                     = None
# gc-trace-disable                  = None
# gc-trace-enable                   = None
get-ipython-results                 = None
go-back                             = None
go-forward                          = None
goto-char                           = None
goto-first-node                     = None
goto-first-visible-node             = None
goto-first-sibling                  = None
goto-global-line                    = None
goto-last-node                      = None
goto-last-sibling                   = None
goto-last-visible-node              = None
goto-line                           = None # Leo's goto-line is better.
goto-next-changed                   = None
goto-next-clone                     = None
goto-next-marked                    = None
goto-next-node                      = None
goto-next-sibling                   = None
goto-next-visible                   = None
goto-parent                         = None
goto-prev-node                      = None
goto-prev-sibling                   = None
goto-prev-visible                   = None
group-operations-clear-marked       = None
group-operations-mark-for-clone     = None
group-operations-mark-for-copy      = None
group-operations-mark-for-move      = None
group-operations-mark-target        = None
group-operations-operate-on-marked  = None
group-operations-transfer           = None
toggle-input-state                  = None
help                                = None
help-for-autocompletion             = None
help-for-bindings                   = None
help-for-command                    = None
help-for-find-commands              = None
help-for-minibuffer                 = None
help-for-python                     = None
hide-body-pane                      = None
hide-log-pane                       = None
hide-pane                           = None
hide-outline-pane                   = None
spell-tab-hide                      = None
hoist                               = None
iconify-frame                       = None
import-file                         = None
# import-at-file                      = None
# import-at-root                      = None
# import-cweb-files                   = None
# import-derived-file                 = None
# import-flattened-outline            = None
# import-noweb-files                  = None
indent-region                       = None
indent-relative                     = None
indent-rigidly                      = None
indent-to-comment-column            = None
insert-body-time                    = None
insert-child                        = None
insert-icon                         = None
insert-headline-time                = None
# insert-kbd-macro                  = None
insert-newline                      = None
insert-node                         = None
insert-parentheses                  = None
# insert-to-buffer                  = None
isearch-backward                    = None
isearch-backward-regexp             = None
isearch-forward                     = None
isearch-forward-regexp              = None
keep-lines                          = None
keyboard-quit                       = None
kill-line                           = None
kill-paragraph                      = None
kill-region                         = None
kill-region-save                    = None
kill-sentence                       = None
kill-to-end-of-line                 = None
kill-word                           = None
line-number                         = None
mark                                = None
mark-changed-items                  = None
mark-subheads                       = None
match-brackets                      = None
menu-shortcut                       = None
minimize-all                        = None
mode-help                           = None
move-lines-down                     = None
move-lines-up                       = None
move-outline-down                   = None
move-outline-left                   = None
move-outline-right                  = None
move-outline-up                     = None
move-past-close                     = None
move-past-close-extend-selection    = None
</t>
<t tx="ekr.20140721165014.19157"># negative-argument                   = None
new                                 = None
newline-and-indent                  = None
next-line                           = None
next-line-extend-selection          = None
open-leo-docs-leo                   = None
open-leo-dist-leo                   = None
open-leo-plugins-leo                = None
open-leo-settings-leo               = None
open-scripts-leo                    = None
open-offline-tutorial               = None
open-online-home                    = None
open-outline                        = None
open-python-window                  = None
spell-tab-open                      = None
outline-to-cweb                     = None
outline-to-noweb                    = None
paste-node                          = None
paste-retaining-clones              = None
paste-text                          = None
previous-line                       = None
previous-line-extend-selection      = None
show-bindings                       = None
show-commands                       = None
show-focus                          = None
promote                             = None
quick-command                       = None
re-search-backward                  = None
re-search-forward                   = None
read-at-file-nodes                  = None
read-outline-only                   = None
rectangle-clear                     = None
rectangle-close                     = None
rectangle-delete                    = None
rectangle-kill                      = None
rectangle-open                      = None
rectangle-string                    = None
rectangle-yank                      = None
redo                                = None
reformat-paragraph                  = None
remove-blank-lines                  = None
remove-sentinels                    = None
remove-space-from-lines             = None
remove-tab-from-lines               = None
repeat-complex-command              = None
replace                             = None
replace-all                         = None
# replace-string                    = None
replace-then-find                   = None
resize-to-screen                    = None
reverse-region                      = None
reverse-sort-lines                  = None
reverse-sort-lines-ignoring-case    = None
revert                              = None
run-all-unit-tests-externally       = None
run-all-unit-tests-locally          = None
run-marked-unit-tests-externally    = None
run-marked-unit-tests-locally       = None
run-selected-unit-tests-externally  = None
run-selected-unit-tests-locally     = None
save-buffers-kill-leo               = None
save-file                           = None
save-file-as                        = None
save-file-to                        = None
# scan-for-autocompleter            = None
scroll-down-half-page               = None
scroll-down-line                    = None
scroll-down-page                    = None
scroll-outline-down-line            = None
scroll-outline-down-page            = None
scroll-outline-left                 = None
scroll-outline-right                = None
scroll-outline-up-line              = None
scroll-outline-up-page              = None
scroll-up-half-page                 = None
scroll-up-line                      = None
scroll-up-page                      = None
search-backward                     = None
search-forward                      = None
search-return-to-origin             = None
select-all                          = None
set-colors                          = None
set-comment-column                  = None
set-extend-mode                     = None
set-fill-column                     = None
set-fill-prefix                     = None
set-find-everywhere                 = None
set-find-node-only                  = None
set-find-suboutline-only            = None
set-font                            = None
set-command-state                   = None
set-insert-state                    = None
# set-mark-command                  = None
set-overwrite-state                 = None
set-replace-string                  = None
settings                            = None
shell-command                       = None
shell-command-on-region             = None
show-calltips                       = None
show-calltips-force                 = None
show-color-names                    = None
show-color-wheel                    = None
show-find-options                   = None
show-fonts                          = None
show-invisibles                     = None
simulate-begin-drag                 = None
simulate-end-drag                   = None
sort-children                       = None
sort-columns                        = None
sort-fields                         = None
sort-lines                          = None
sort-lines-ignoring-case            = None
sort-recent-files                   = None
sort-siblings                       = None
spell-change                        = None
spell-change-then-find              = None
spell-find                          = None
spell-ignore                        = None
split-line                          = None
start-ipython                       = None
start-search                        = None
suspend                             = None
tab-cycle-next                      = None
tab-cycle-previous                  = None
tabify                              = None
tangle                              = None
tangle-all                          = None
tangle-marked                       = None
toggle-abbrev-mode                  = None
toggle-active-pane                  = None
toggle-angle-brackets               = None
toggle-autocompleter                = None
toggle-calltips                     = None
toggle-extend-mode                  = None
toggle-find-ignore-case-option      = None
toggle-find-in-body-option          = None
toggle-find-in-headline-option      = None
toggle-find-mark-changes-option     = None
toggle-find-mark-finds-option       = None
toggle-find-regex-option            = None
toggle-find-word-option             = None
toggle-find-wrap-around-option      = None
toggle-split-direction              = None
transpose-chars                     = None
transpose-lines                     = None
transpose-words                     = None
undo                                = None
unformat-paragraph                  = None
unindent-region                     = None
# universal-argument                  = None
unmark-all                          = None
untabify                            = None
untangle                            = None
untangle-all                        = None
untangle-marked                     = None
upcase-region                       = None
upcase-word                         = None
view-lossage                        = None
vr-toggle                           = None
weave                               = None
what-line                           = None
word-search-backward                = None
word-search-forward                 = None
write-at-file-nodes                 = None
write-dirty-at-file-nodes           = None
write-missing-at-file-nodes         = None
write-outline-only                  = None
yank                                = None
yank-pop                            = None
zap-to-character                    = None</t>
<t tx="ekr.20140721165014.19158">do-nothing = Shift-F1
do-nothing = Shift-F2
do-nothing = Shift-F3
do-nothing = Shift-F4
do-nothing = Shift-F5
do-nothing = Shift-F6
do-nothing = Shift-F7
do-nothing = Shift-F8
do-nothing = Shift-F9
do-nothing = Shift-F10
do-nothing = Shift-F11
do-nothing = Shift-F12
</t>
<t tx="ekr.20140721165014.19159">To enable vim emulation, place a copy of this node (and its sub-nodes) into
your myLeoSettings.leo file under the "@settings" node.
</t>
<t tx="ekr.20140721165014.19160">Vi emulation - User documentation:
	Installation
	| Place a copy of the "@keys Vim bindings" node and its sub-nodes,
	| located in the leoSettings.leo file, under the "@settings" node
	| in the myLeoSettings.leo file
	|
	| The same procedure is performed to upgrade to a new version.
	| Note: Place any local customized key bindings in a "@keys My Vi" node
	|       below (not underneath) the "@keys Vim bindings" node in the
	|       myLeoSettings.leo file.

	Commands supported
	| Documentation of the supported vi commands is provided in Chapter 22 of
	| Leo's User Guide (http://webpages.charter.net/edreamleo/vimBindings.html).

	Commands not supported
	| Most unsupported Vi commands are either due to a Leo architecture problem
	| or the lack of an equivelent Leo function.
	| (See the Vim Developer Documentation for a detailed list of open issues)
	|
	| Most extensions to the Vi editor implemented in Vim are not supported
	| by Leo's Vi/Vim emulation at this time.

	Vi emulation in the Outline pane:
		Editing the headline text:
		| Only Vi commands that operate on a single line of text are supported.
		| Some workarounds were required due to the current Leo implementation.
		| Problems associated with editing a node's headline text are documented
		| in the "Open issues" section in the Vim Developer Documentation node.

		Traversing and reorganizing the outline:
		| Outline navigation and manipulation are mapped to keys based on Vi's
		| use of the H, J, K, and L key to move left, down, up, and right.  Refer
		| to Leo's User Guide for details on the operation's supported and their
		| key mappings.

		Outline traversing from the Body pane:
		| Outline navigation commands can also be invoked while in the body
		| panes' command mode.  This reduces the keystrokes necessary to switch
		| to Outline pane, select another node, and switch back to the body pane.
		| (Refer to Chapter 22 of the Leo User Guide for more details)
</t>
<t tx="ekr.20140721165014.19161">History
	Version 03-07-10
		Assigned line scroll by one line to 'j' and 'k' keys when the
		   focus is in the outline 
		Fixed unexpected switch from Body to Outline focus when inserting
			character into 1st column of 1st row.
		Removed duplicate key bindings
			'p' and 'P' commands in "@shortcuts - vi in Outline pane" node
	Version 10-06-09
		Restored buffer 'scroll' by page in body pane (works in Tk GUI)
			(Moves cursor, scrolling to keep cursor visible)
		Added buffer 'scroll' by half-page and line in body pane
			(Moves cursor, scrolling to keep cursor visible)
		Added paragraph reformating using 'gqq' and 'gqap' commands
			Also added 'gww' and 'gwap' (should not move cursor but does)
		Mapped period key to repeat-complex-command.
			Repeats Leo's command line. Should repeat key commands.
		Removed mapping of Ctrl-[ to "Promote" function.
			Using Ctrl-[ to exit a search string entry was promoting the node.
	Version 12-Jul-09
		Fixed commands using beginning-of-line and end-of-line.  Functions
			in leoEditCommands.py were updated in past months to stay on
			current line when called when cursor at beginning/end of line.
		Effected commands:
			beginning-of-line function (&lt;vi command&gt; - &lt;node changed&gt;)
				|   - @mode body-beginning-of-line-mode
				O   - @mode body-new-line-above
				dd  - @mode body-delete-line
				dG  - @mode body-delete-to-end-of-buffer
				yy  - @mode body-yank-line
				yG  - @mode body-yank-to-end-of-buffer
				cc  - @mode body-change-line
				cG  - @mode body-change-to-end-of-buffer
				-   - @mode body-goto-indent-previous-line
			end-of-line function (&lt;vi command&gt; - &lt;node changed&gt;)
				o   - @mode body-new-line-below
				A   - @mode body-append
				dgg - @mode body-delete-to-beginning-of-buffer
				ygg - @mode body-yank-to-beginning-of-buffer
				cgg - @mode body-change-to-beginning-of-buffer
				$   - @mode body-end-of-line
				J   - @mode body-join
	Version 07-Mar-09
		Added "Vim Settings" node containing the Leo settings needed/used to
			support Vim emulation.
		Removed binding of '=' key to "double-click-icon-box" function
		| It is not a Vi/Vim related function
		| Re-enable it by placing the following bindings in an "@keys" node
		|   double-click-icon-box  ! body = equal
		|   enter-tree-double-click-node-mode ! tree = equal        
		Corrected installation procedure in the Vim User Documentation node
		Clarified descriptions in the User and Developer documentation nodes.
	Version 21-Oct-08
		Split the "Vim documentation" node into "Vim User Documentation"
			and "Vim Developer Documentation" nodes.
		Updated User and Developer documentation.
		Fixed '|' to not go to previous line if key pressed while at column 1
		Fixed '-' to go to previous line (Goes to column 1 instead of indent)
	Version 06-Aug-08
		Removed mapping of 'Ctrl-v' in the outline to toggle select mode.
			'Ctrl-v' already assigned to paste a node into the outline.
	Version 05-Aug-08
		Updated Vim documentation in the Users Guide.
		Changed key mapped to insert-node from 'Ctrl-o' to 'o'.
		Added mapping of 'Ctrl-v' in addition to 'v' to toggle select mode.
		Fixed unindent, now shifts one tab width instead of all.
		Added unindent by sentence, paragraph, and buffer support.
		Removed 'Ctrl-n' and 'Alt-n' as alternatives for 'n'.
		Removed '' and `` to go to last edit, use Undo/Redo (Leo limitation)
	Version 23-Jul-08
		Updated Vim documentation in the Users Guide.
		Added '^' key to move to the first column when in the outline pane.
		Modified 'Ctrl-/' to set one of multiple search options (see User Guide).
		Fixed move backward to beginning of word in headline text ('b' key).
		Fixed yank to end of paragraph to not yank trailing blank line ("y}" key).
		Removed selecting of text when using W,B,E keys in outline.
		Removed binding of "goto-line" to Ctrl-G as "&lt;num&gt;G" replacement (broken).
	Version 22-Jul-08
		Updated Vim documentation in the Users Guide.
		Added support for vi's Mark and Go To Mark commands in body pane.
		Added support for deleting selected text in body pane ("d&lt;cr&gt;").
		Added support for changing selected text in body pane ("c&lt;cr&gt;").
		Modified yank-selected-text ("y&lt;cr&gt;"), now exits select mode (body pane).
		Modified searches in outline to limit search to node and its subnodes.
		Modified searches in node's body to limit search to node's body.
		Added command to set search scope to "everything" ('Ctrl-/')
		Added command to "paste from clipboard then find next" ('Ctrl-p')
		Added command to prompt user for search and replace strings ('Alt-/')
		Added command to "replace then search" using 'Alt-/' strings ('Alt-p')
		Fixed ':w' (tree pane) and ':wq' (tree and body panes) commands
	Version 22-Jun-08
		Updated Vim documentation in the Users Guide.
		Improved "dd" command (handles blank lines correctly)
		added "'." and "`." commands to go to location of last edit.
		Added y&lt;cr&gt; mapping to yank selected text (removed Alt-Y).
		Added paste text support for node headlines.
		Added Delete,Yank,Change to beginning and end of buffer.
		Added &lt;cr&gt; to :wq command.
		Added text selection workaround for yt&lt;char&gt; and ct&lt;char&gt;.
		Added j and k to move to next/previous node when outline in focus.
		Added Ctrl-w j and Crl-w k to switch active view in a split window.
		Added Alt-G support when outline in focus.
		Removed binding of Ctrl-s to save-file (Not Vi, done by default).
		Removed all arrow key bindings (see open issues section) 
	Version 27-May-08
		Newly found commands
			| Additional commands were found that are available for mapping to
			| keys.  The "@shortcuts - unbind all commands" node has been
			| updated.
		Added Vim's window support (basic) to the body pane (Leo's editors)
			| 'Ctrl-w s' or 'Ctrl-w n' will add another editing window.
			| 'Ctrl-w w' or 'Ctrl-w p' will cycle focus between editor windows.
			| 'Ctrl-w c' or 'Ctrl-w q' will close the editor window with focus.
		Fixed Arrow mappings
			| All arrows were mapped to a goto-node command in outline pane.
			| Left and right arrows in outline pane move cursor one character.
		Added Ctrl-Arrow support in Outline and Body pane.
			| Ctrl-Arrow keys are also mapped to the goto-node commands
		Added Ctrl-Shift-Arrow support in Outline pane
			| Ctrl-Shift-Arrow keys are also mapped to the move-node commands
		Added vi's 'e' key mapping to move to the end of the current word.
			| Made possible by the newly found forward-end-word command.
		Added 'Shift-e' key mapping to select to the end of the current word.
			| Not-vi but useful until text editing commands work in headlines.
			| Made possible by the newly found forward-end-word-extend-select
		Added vi's Shift-f key mapping to go backwards to a character.
			| Made possible by the newly found backward-to-character command.
		Mapped '=' to double-click-icon-box command (Not Vi/Vim)
			| Use open-with plug-in to invoke external Vim editor without
			| mouse. Made possible by the newly found double-click-icon-box
			| command.
		Added vi's Ctrl-y and Ctrl-e to scroll outline up and down by lines.
			| Made possible by newly found scroll-outline-up/down-line commands
			| Also mapped vi's Ctrl-d,-u,-f,-b to same (until implemented).
		Removed Ctrl-y,Ctrl-d,Ctrl-p in outline to copy,delete,paste nodes.
			| Keys are used in vi for other functions. Use Ctrl-c,Ctrl-x,Ctrl-v
		Remapped copy-text to Alt-y to avoid use of vi key mappings
			| copy-text yanks the currently selected text into the clipboard.
			| Vi doesn't have a concept of "selected text" but it is useful.
		Mapped vi's Ctrl-d,-u,-e,-y to Ctrl-f,-b in body (until implemented)
		Fixed missing @mode node mapped to Ctrl-Shift-l
	Version 26-May-08
		Body pane key mappings - added and corrected
		Outline pane key mappings - initial release
		non-vi support key mappings - merged into Body and Outline mappings
		Documentation - Added
	Version 22-May-08
		Body pane key mappings - Released
		non-vi support key mappings - Released
	Version 18-May-08
		Body pane key mappings - Updated
		non-vi support key mappings - Updated

Vim Modeline (used by Vim for file specific settings)
	| vim: noet filetype=otl foldcolumn=1
</t>
<t tx="ekr.20140721165014.19162">Vi emulation - Developer documentation:
	Realization:
		Leo Configuration:
		| The following configuration was used for all testing:
			@strings top_level_unbound_key_action = command
			@bool stayInTreeAfterEditHeadline = True
			@bool stayInTreeAfterSelect = True
			@bool outline_pane_has_initial_focus = True
		
		Leo's Panes:
		| A "pane" is a area of the screen containing a user interface dedicated
		| to supporting a common set of tasks.  Vi key mappings are associated
		| with the Outline pane, the Body pane, or to the entire Leo program.
		| (See the "Leo's @mode nodes" section bellow)
		
		Leo's Command/Insert States:
			Command state - Denoted by a blue background color (Outline,Body pane)
			| Keys are mapped to commands.
			Insert state - Denoted by a red background color (Outline,Body pane)
			| Keys pressed are inserted into the text.
			Grayed state - Denoted by a gray background color (Outline pane)
			| Keys pressed will cause the next node with a headline starting with
			| that key to be selected.  This "select node by first character"
			| feature is built into Leo. It is not part of the vi support.
			| 
			| This state is intentionally avoided in the vi based outline key
			| mappings. If in the "Grayed" state, enter Ctrl-i to switch to the
			| "Command" state.  The "Grayed" state can be entered from the
			| outline's "Command" state by pressing the Ctrl-] key.
		
		Leo's @mode nodes:
		| Most vi commands are implemented using Leo's @mode nodes to execute
		| macros or to implement Vi's multi-key commands.
		| 
		| Functions that act on the Outline pane are implemented in the
		| "@shortcuts - vi in Outline pane" node and its sub-nodes.
		| Modes associated with functions invoked when the Outline pane has
		| focus begin with "tree-".
		| Modes associated with functions invoked when the Body pane has
		| focus begin with "body-".
		|
		| Functions that act on the Body pane are implemented in the
		| "@shortcuts - vi in Body pane" node and its sub-nodes.
		|
		| Functions with both an Outline and a Body pane component are
		| implemented in the "@shortcuts - vi miscellaneous" node and
		| its sub-nodes.

			Multi-key Vi commands:
			| Vi has many commands that require multiple keys to invoke.
			| Each key except the last in the command are assigned to an
			| @mode node that, when executed, maps the subsequent allowed
			| keys in the command sequence.
			| The last key in the sequence is mapped directly to a Leo
			| command or to a "Macro" mode (see below). Any modes mapped
			| to a key by another mode are located in a child node of the
			| @mode node doing the mapping.
			| 
			| Example:
			| The "dtw" key sequence, which performs a "Delete To the 'W'
			| character" command (note the capital letters) has the following
			| key bindings:
			|   The 'd' key is mapped to the "vi-delete-object" @mode node.
			|   The "vi-delete-object" node binds the 't' key to the
			|       "vi-delete-to-char" @mode node.
			|   The "vi-delete-to-char" contains the Leo commands to emulate
			|       the vi "Delete to &lt;character&gt;" command.

			Macros
			| Many vi commands do not have an equivalent Leo command.
			| Instead, an @mode node is used to store a macro containing
			| a series of Leo commands that, when executed, emulates the
			| Vi functionality.

	Open issues
		Current character:
		| Vi normally uses two different "current character" designators
		| depending on the current state.

			Insert state:
			| In the Insert state, a vertical bar is placed between two
			| characters to indicate where the next key will be inserted.
			| Leo's cursor is of this type.

			Command state: 
			| In the Command state, vi expects that the cursor is highlighting
			| a current character and provides commands to enter the insert
			| state or paste text either before or after that current
			| character.  Leo's vi emulation currently does not support a
			| "current character" cursor. As a result, inserting and pasting
			| before or after is replaced by inserting or pasting "at" the
			| current cursor location.  For example, the 'i' and 'a' command
			| are both mapped to enter the insert state at the current cursor
			| location.

		Commands requesting user input:
		| Commands requesting user input must be the last command executed within
		| an @mode node.  This prevents the implementation of commands such as
		| "yank to &lt;character&gt;" that requires a "copy to clipboard" operation
		| after the "find-character" command.

		Editing node headlines using @mode nodes:
		| Commands modifying or selecting headline text do not work correctly
		| within a @mode node.  This eliminates accurate implementation of
		| vi's delete/change/substitute/yank object commands.  As a workaround,
		| the commands are currently written to only select the text.  The user
		| must perform the subsequent delete, change, substitute, and yank.

		Repeat last editing command:
		| The ability to repeat the last editing related command by pressing the
		| period key is not supported and there is no workaround in place.

		Repeat last cursor movement command:
		| The ability to repeat the last "To character" or "Find character"
		| command by selecting the ";" key is not supported and there is no
		| workaround in place.

		Range prefix to commands:
		| The ability to specify a numeric range prefix is not supported.  For
		| example, entering "3dd" will not delete the next three lines and "20G"
		| will not move the cursor to the 20th line in the file.

		Range prefix to objects:
		| The ability to specify a numeric range prefix to an object is not
		| supported.  For example, the "d2fx" command should Delete up to and
		| including the 2nd Found "x" character.

		Binding numeric keys:
		| Mapping a number to a command or an @mode node works but can not be
		| used as it prevents the number from being entered as text while in Vi's
		| insert state.

		Binding Arrow keys:
		| Binding arrow keys, with or without Shift, Ctrl, Alt, and their
		| combinations, to commands or @mode nodes have no effect. 

		Binding 'bksp' key:
		| Binding 'bksp' key to back-char to move back a character in command
		| mode prevents 'bksp' from deleting characters in text edit mode.

		Undo command:
		| Using the "undo" command (key 'u') to undo a change to a node's
		| headline text only works correctly after another node has been
		| selected.  It appears that changes made to a node's headline text are
		| not recorded in Leo's change history until the edited node has lost
		| focus.

		Functions missing or require changes:
			Toggle case:
			| Leo provides support for switching to upper or lower case but no
			| method exists to toggle between cases (used by Vi's "~" command).

			Replace current character:
			| Vi's "r" command allows user to replace the current character with
			| the next entered character.

			Move current line:
			| Vi has a collection of "z&lt;movement&gt;" commands that will move the
			| current line to the top, middle, and bottom of the screen.  They are
			| not supported in Leo.

			Move buffer up/down:
			| Vi maps keys to scroll the text up/down one line and by half the
			| number of visible lines.  Leo does not support this.

			Word related commands:
			| Vi supports two types of words in its commands: Words that consist
			| of only a subset of the character set and words that considers all
			| characters except the space and tab characters as part of a word.
			|
			| Leo's always considers a word to consist of a subset of characters
			| although some word related commands include different characters
			| than others.

			Forward and backward by sentences:
			| Leo's sentence related functions do not stop at empty lines nor do
			| they skip over periods within words nor do they stop at sentences
			| ending in non-periods nor do they stop at the end or beginning of
			| the buffer. Note: see forwardSentenceHelper and backSentenceHelper
			| functions.

			Focus to Body pane:
			| Leo functions exist which unconditionally set focus to the body pane
			| regardless of the active pane.
			|
			| For example, bracket matching commands ("%" key) do not work within
			| a node's headline text.  Instead, the command is performed on the
			| node's body text.

			Displaying mode help:
			| The "--&gt; mode-help" command has the following issues related to the
			| display of the "Help" tab:
				Key label always capitalized:
				| Vim commands are mapped to both lower-case and upper-case keys
				| but always appear mapped to upper-case keys within the "Help"
				| tab.
				Layout of tab's contents:
				| To improve readability and better support narrow tab cards,
				| display the mode's label without the "enter-" and "-mode" text
				| and place the key label before the mode label.
				|
				| For example, the following entries would change from:
				| 		enter-vi-delete-line-mode d
				| 		enter-vi-delete-to-begin-of-word-mode b
				| to:
				| 		d : vi-delete-line
				| 		b : vi-delete-to-begin-of-word

	Notes:
		Yank vs. Yank:
		| Vi's "yank" commands copy the selected text TO the clipboard.
		| Leo's "yank" commands insert text FROM the clipboard.

		copy-text in modes:
		| Leo's copy-text command does not work within a mode.  As a result,
		| all "copy to clipboard" capability is being implemented using the
		| kill-&lt;object&gt; command followed by Leo's "yank" command to put the
		| text back.

		paste-text in modes:
		| The paste-text command does not work within an @mode node.  Leo's
		| "yank" command is used instead.

		delete-node does not copy node to clipboard:
		| A copy-node command is issued to copy the node to the clipboard
		| followed by the delete-node command.

Vim Modeline (used by Vim for file specific settings)
	| vim: noet filetype=otl foldcolumn=1
</t>
<t tx="ekr.20140721165014.19163"></t>
<t tx="ekr.20140721165014.19164">@nocolor

This setting determines the initial binding for otherwise-unbound keystrokes
when no mode is in effect.  Note: the keyboard-quit command exits all modes.

The valid values are::

command:  Leo ignores the key (like Vim).
insert:  Leo inserts the key at the cursor (like Emacs)
overwrite: Leo replaces the character at the cursor.</t>
<t tx="ekr.20140721165014.19165">This allows the newline character to switch from the outline pane to the body pane.</t>
<t tx="ekr.20140721165014.19166">True:  Outline gets focus when a new window is opened.
False: Body pane gets focus when a new window is opened.</t>
<t tx="ekr.20140721165014.19167">True: (Recommended) Selecting an outline node leaves the focus in the outline pane.

If this is False it will be harder to use the arrow keys in the headline.
    
False: (Legacy) Selecting an outline node transfers focus to the body pane.</t>
<t tx="ekr.20140721165014.19168">#Miscellaneous vi commands
#---------------------------------

#Prevent Ctrl-[ (= Esc) from promoting node when invoked to exit entry of search string
promote                           ! kill = Ctrl-[

enter-focus-to-tree-mode          ! body = Tab      #Focus to Outline pane
enter-focus-to-body-mode          ! tree = Tab

enter-body-command-line-mode      ! body = colon    #Enter vi's command line
enter-tree-command-line-mode      ! tree = colon
full-command                      = Ctrl-colon      #Enter Leo's command mode

#undo/redo commands (vim commands using multiple Leo commands will need multiple undo commands)
undo                              = u               #Undo last command
enter-tree-undo-mode              ! tree = u
redo                              ! body = Ctrl-r   #Re-do undone command
enter-tree-redo-mode              ! tree = Ctrl-r
repeat-complex-command            = period          #Re-do last command

goto-global-line                  = Alt-g           #Goto line (in derived file)

enter-body-shift-z-mode           = Shift-z         #ZZ command - Save file and exit
</t>
<t tx="ekr.20140721165014.19169">#Undo last headline edit
#Bind: u
#Note: undo only seems to work from body pane
--&gt; focus-to-body
--&gt; undo
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19170">#Redo last headline edit
#Bind: Ctrl-r
#Note: redo only seems to work from body pane
--&gt; focus-to-body
--&gt; redo
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19171">#Focus to Outline pane
#Bind: &lt;Tab&gt;

--&gt; focus-to-tree
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19172">#Focus to Body pane
#Bind: &lt;Tab&gt;

--&gt; end-edit-headline
--&gt; focus-to-body
#   exit-named-mode: Prevents focus returning to outline
#                    when inserting character in 1st row/col.
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19173">#Enter vi's command line
#Bind: :

--&gt; set-silent-mode
#--&gt; mode-help

enter-body-command-revert-mode = e
enter-body-command-save-mode = w
enter-body-command-quit-mode = q
</t>
<t tx="ekr.20140721165014.19174">#Reload current file
#Bind: :e&lt;cr&gt;
#Note: Vi command is :e!&lt;cr&gt;.
#      '!' not used since Leo prompts to save file changes.

revert = return</t>
<t tx="ekr.20140721165014.19175">#Save current file (and maybe quit)
#Bind: :w[q]&lt;cr&gt;

--&gt; set-silent-mode
#--&gt; mode-help

save-file                           = return
enter-body-command-save-quit-mode   = q</t>
<t tx="ekr.20140721165014.19176">#Save file and exit Leo
#Bind: :wq&lt;cr&gt;

enter-body-command-save-quit-return-mode = return
</t>
<t tx="ekr.20140721165014.19177">#Save file and exit Leo
#Bind: :wq&lt;cr&gt;

--&gt; save-file
--&gt; exit-leo
</t>
<t tx="ekr.20140721165014.19178">#Exit Leo
#Bind: :q&lt;cr&gt;

exit-leo = return</t>
<t tx="ekr.20140721165014.19179">#Enter vi's command line
#Bind: :

--&gt; set-silent-mode
#--&gt; mode-help

--&gt; focus-to-body
enter-tree-command-revert-mode   = e
enter-tree-command-save-mode     = w
enter-tree-command-quit-mode     = q
</t>
<t tx="ekr.20140721165014.19180">#Reload current file
#Bind: :e&lt;cr&gt;
#Note: Vi command is :e!&lt;cr&gt;.
#      '!' not used since Leo prompts to save file changes.

revert = return</t>
<t tx="ekr.20140721165014.19181">#Save current file (and maybe quit)
#Bind: :w[q]&lt;cr&gt;

--&gt; set-silent-mode
#--&gt; mode-help

enter-tree-command-save-only-mode      = return
enter-tree-command-save-quit-mode   = q
</t>
<t tx="ekr.20140721165014.19182">#Not in use, see "@mode tree-comm#Save file
#Bind: :w&lt;cr&gt;

--&gt; save-file
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19183">#Save file and exit Leo
#Bind: :wq&lt;cr&gt;

enter-tree-command-save-quit-return-mode = return
</t>
<t tx="ekr.20140721165014.19184">#Save file and exit Leo
#Bind: :wq&lt;cr&gt;

--&gt; save-file
--&gt; exit-leo
</t>
<t tx="ekr.20140721165014.19185">#Exit Leo
#Bind: :q&lt;cr&gt;

exit-leo = return</t>
<t tx="ekr.20140721165014.19186">#Save buffers and exit Leo
#Bind: ZZ

enter-body-shift-z-save-quit-mode = Shift-Z</t>
<t tx="ekr.20140721165014.19187">#Save file and exit Leo
#Bind: ZZ

--&gt; save-file
--&gt; exit-leo
</t>
<t tx="ekr.20140721165014.19188"># vi key bindings - Outline pane #
 ################################

#State change commands
#--------------------------------
set-insert-state                 ! tree = i        #To insert from command state
set-insert-state                 ! tree = a        #To insert from command state

edit-headline                    ! tree = Ctrl-i   #To command from grayed state
#end-edit-headline                ! tree = Ctrl-]   #To grayed from command state

set-command-state                ! tree = Ctrl-[   #To command from insert state
set-command-state                ! tree = Esc      #To command from insert state
set-command-state                ! tree = return   #To command from insert state

#Yank text commands
#--------------------------------
end-of-line-extend-selection     ! tree = Shift-y  #Select to end of line
enter-tree-yank-object-mode      ! tree = y        #'yy' selects line, 'y&lt;return&gt;' yanks selected text
toggle-extend-mode               ! tree = v        #select characters on/off (Vim selects lines)
#toggle-extend-mode              ! tree = Ctrl-v   #Not used. Leo uses Ctrl-v to paste nodes.

#Change text commands
#--------------------------------
end-of-line-extend-selection     ! tree = Shift-c  #Select to end of line
enter-tree-change-object-mode    ! tree = c        #Only 'cc' supported, follow with 'i'

#Substitute text commands
#--------------------------------
forward-char-extend-selection    ! tree = s
#kill-line                        ! tree = Shift-s #kill-line seems to only work within @mode

#Delete text commands
#--------------------------------
end-of-line-extend-selection     ! tree = Shift-d  #Temporary workaround, follow with 'i'
enter-tree-delete-text-object-mode ! tree = d      #Only 'dd' supported

delete-char                      ! tree = x
delete-char                      ! tree = delete

#Scroll commands
#--------------------------------
scroll-outline-up-page           ! tree = Ctrl-b   #Scroll full window
scroll-outline-down-page         ! tree = Ctrl-f

scroll-outline-up-page           ! tree = Ctrl-u   #Should scroll 1/2 window
scroll-outline-down-page         ! tree = Ctrl-d

scroll-outline-up-line           ! tree = Ctrl-y   #Scroll 1 line
scroll-outline-down-line         ! tree = Ctrl-e

#Move within line commands
#--------------------------------
forward-char                     ! tree = RtArrow
forward-char                     ! tree = l
back-char                        ! tree = Left     #LtArrow
back-char                        ! tree = h

forward-word                     ! tree = w
forward-word                     ! tree = Shift-w  #no before/after support.
back-word                        ! tree = b
back-word                        ! tree = Shift-b  #no before/after support.
forward-end-word                 ! tree = e        #no before/after support.
forward-end-word                 ! tree = Shift-e

beginning-of-line                ! tree = bar      #beginning-of-line (Vi style)
beginning-of-line                ! tree = ^        #beginning-of-line (Vi style)
end-of-line                      ! tree = $        #end-of-line (Vi style)

match-brackets                   ! tree = %        #Go to matching bracket

#Move within tree commands
#--------------------------------
enter-tree-goto-mode                ! tree = g        #gg command (go to first)
enter-tree-goto-last-node-mode      ! tree = Shift-g

enter-tree-goto-next-visible-mode   ! tree = Ctrl-j
enter-tree-goto-next-visible-mode   ! tree = DnArrow
enter-tree-goto-next-visible-mode   ! tree = Ctrl-DnArrow

enter-tree-goto-prev-visible-mode   ! tree = Ctrl-k
enter-tree-goto-prev-visible-mode   ! tree = UpArrow
enter-tree-goto-prev-visible-mode   ! tree = Ctrl-UpArrow

enter-tree-contract-or-go-left-mode ! tree = Ctrl-h
enter-tree-contract-or-go-left-mode ! tree = Ctrl-LtArrow
enter-tree-expand-and-go-right-mode ! tree = Ctrl-l
enter-tree-expand-and-go-right-mode ! tree = Ctrl-RtArrow

#Move with body pane (focus remains in tree pane)
#------------------------------------------------
enter-tree-goto-next-line-mode      ! tree = j
enter-tree-goto-prev-line-mode      ! tree = k

#Find character commands
#-----------------------
find-character                      ! tree = f
backward-find-character             ! tree = Shift-f

#search text commands (limited to node and subnodes unless stated otherwise)
#  Note: Backward searches ('?') not supported. They do not go beyond current node's body pane.
#---------------------------
enter-tree-search-forward-mode      ! tree = /        #Search forward within node and subnodes
do-nothing                          ! tree = ?        #Does not work, scope only current body
do-nothing                          ! tree = Ctrl-?   #Does not work, scope only current body
find-next                           ! tree = n        #Find next (same scope, same direction)
find-prev                           ! tree = Shift-n  #Find next (same scope, other direction)
enter-body-search-options-mode      ! tree = Ctrl-/   #Change search options
#Note: changing options puts cursor in body and exits @mode macro. Use &lt;tab&gt; to go to headline.

#Replace [and find next (scope set by search command)] using paste buffer (clipboard)
#  Note: Scope and direction set by last search command '/', '?' or 'Ctrl-/'(scope only)
#  Note: Same replace commands implemented for both "tree" and "body" panes
#--------------------------------
paste-text                          ! tree = p        #Paste text before cursor.
paste-text                          ! tree = Shift-p  #Paste after not supported
do-nothing                          ! tree = Ctrl-p   #Does not work in headlines, use 'pn'

#Replace and find next (user prompted) (search direction taken from last use of '/' or '?')
enter-tree-replace-string-mode      ! tree = Alt-/    #Prompt for search &amp; replace string
replace-then-find                   ! tree = Alt-p    #Replace then search (use after Alt-/)

#Node create/delete/copy/paste commands
#--------------------------------------
insert-node                      ! tree = o

enter-tree-copy-node-mode        ! tree = Ctrl-c
enter-tree-delete-node-mode      ! tree = Ctrl-x
enter-tree-paste-node-mode       ! tree = Ctrl-v

#Move nodes
#--------------------------------
enter-tree-move-outline-down-mode   ! tree = Ctrl-Shift-j
enter-tree-move-outline-left-mode   ! tree = Ctrl-Shift-h
enter-tree-move-outline-right-mode  ! tree = Ctrl-Shift-l
enter-tree-move-outline-up-mode     ! tree = Ctrl-Shift-k

enter-tree-move-outline-down-mode   ! tree = Ctrl-Shift-DnArrow
enter-tree-move-outline-left-mode   ! tree = Ctrl-Shift-LtArrow
enter-tree-move-outline-right-mode  ! tree = Ctrl-Shift-RtArrow
enter-tree-move-outline-up-mode     ! tree = Ctrl-Shift-UpArrow

#Transclude nodes commands
#--------------------------------
enter-tree-clone-node-mode             ! tree = t        #Clone current node
enter-tree-goto-next-clone-node-mode   ! tree = Ctrl-t

#Mark nodes commands
#--------------------------------
enter-tree-mark-node-mode              ! tree = m
enter-tree-goto-next-marked-node-mode  ! tree = Ctrl-m
enter-tree-unmark-all-nodes-mode       ! tree = Alt-m
</t>
<t tx="ekr.20140721165014.19189">#Yank &lt;obj&gt; (vi's yank is the same as Leo's copy-text)
#Bind: y&lt;obj&gt;
#Note: Problem, all comamnds that select text switch to body pane.
      
--&gt; set-silent-mode

copy-text   = return
select-all  = y
</t>
<t tx="ekr.20140721165014.19190">#Change &lt;object&gt;
#Bind: c&lt;obj&gt;
#Note: Problem, any select text commands switches focus to body pane.

--&gt; set-silent-mode

kill-line = c	   #follow with 'i' to enter text
</t>
<t tx="ekr.20140721165014.19191">--&gt; set-silent-mode
kill-line = d
</t>
<t tx="ekr.20140721165014.19192">--&gt; end-edit-headline
--&gt; copy-node
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19193">#Paste node
#Bind: Ctrl-v

--&gt; end-edit-headline
--&gt; paste-node
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19194">--&gt; end-edit-headline
--&gt; copy-node
--&gt; delete-node         #Does not copy to clipboard
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19195">#Go to first node
#Bind: gg 

--&gt; set-silent-mode
--&gt; goto-last-node
--&gt; edit-headline

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19196">#Go to specified node location
#Bind: g&lt;location&gt;

--&gt; set-silent-mode
#--&gt; mode-help

enter-node-goto-first-node-mode     = g</t>
<t tx="ekr.20140721165014.19197">#Go to first node
#Bind: gg 

--&gt; set-silent-mode
--&gt; goto-first-node
--&gt; edit-headline

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19198">--&gt; goto-next-visible
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19199">--&gt; goto-prev-visible
--&gt; edit-headline

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19200">#Search forward within suboutline
#Bind: /
--&gt; set-find-suboutline-only
--&gt; search-forward</t>
<t tx="ekr.20140721165014.19201">#Specify search and replace string
#  then Search in direction of last '/', '?' command within suboutline
#  (follow with 'p' to replace or 'Ctrl-p' to replace and search)
#Bind: Ctrl-/

--&gt; set-find-suboutline-only
--&gt; replace-string</t>
<t tx="ekr.20140721165014.19202">--&gt; contract-or-go-left
--&gt; edit-headline

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19203">--&gt; contract-node
--&gt; edit-headline

--&gt; exit-named-mode 
</t>
<t tx="ekr.20140721165014.19204">--&gt; expand-and-go-right
--&gt; edit-headline

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19205">--&gt; move-outline-up
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19206">--&gt; move-outline-down
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19207">--&gt; move-outline-left
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19208">--&gt; move-outline-right
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19209">#Clone current node
#Bind: t

--&gt; clone-node
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19210">#Go to next cloned node
#Bind: ctrl-t

--&gt; goto-next-clone
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19211">#Mark current node
#Bind: m

--&gt; mark
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19212">#Go to next marked node
#Bind: ctrl-m

--&gt; goto-next-marked
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19213">#Unmark all nodes
#Bind: Alt-m

--&gt; unmark-all
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19214"></t>
<t tx="ekr.20140721165014.19215">#Scroll body up one page when focus is in the outline pane
#Bind: j

#--&gt; focus-to-body
--&gt; next-line
--&gt; focus-to-tree
--&gt; edit-headline
--&gt; exit-named-mode   #Runs faster when used
</t>
<t tx="ekr.20140721165014.19216">#Scroll body up one line when focus is in the outline pane
#Bind: k

#--&gt; focus-to-body
--&gt; previous-line
--&gt; focus-to-tree
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19217"># vi key bindings - body pane #
 ##############################

#State change commands
#--------------------------------
set-insert-state                 ! body = i        #Insert at cursor
set-insert-state                 ! body = a        #Insert at cursor
enter-body-insert-at-indent-mode ! body = Shift-i  #Insert at first non-space
enter-body-append-mode           ! body = Shift-a  #Insert at end of line
set-overwrite-state              ! body = Shift-r  #Overwrite text
enter-body-new-line-below-mode   ! body = o        #Open new line below
enter-body-new-line-above-mode   ! body = Shift-o  #Open new line above
keyboard-quit                    ! body = Ctrl-[   #Exit insert state
keyboard-quit                    ! body = esc      #Exit insert state

#Change commands
#--------------------------------
enter-body-change-to-end-of-line-mode ! body = Shift-c
enter-body-change-object-mode         ! body = c        #Supports 'cd','cw','cb'

#Substitute commands
#--------------------------------
enter-body-substitute-char-mode    ! body = s        #Replace current character
enter-body-substitute-line-mode    ! body = Shift-s  #Replace current line

#Delete commands
#--------------------------------
enter-body-delete-object-mode    ! body = d        #Supports 'dd','dw','db'
enter-body-delete-to-end-of-line-mode ! body = Shift-d
delete-char                      ! body = x
delete-char                      ! body = delete

#Yank text commands
#--------------------------------
enter-body-yank-to-end-of-line-mode   ! body = Shift-y
enter-body-yank-object-mode      ! body = y        #Yank objects
toggle-extend-mode               ! body = Ctrl-v   #select characters-on/off
toggle-extend-mode               ! body = v        #select characters-on/off (Vim selects lines)

#Indent line commands
#--------------------------------
enter-body-indent-mode           ! body = greater  #&gt;&lt;obj&gt; commands
enter-body-unindent-mode         ! body = less     #&lt;&lt;obj&gt; command

#Join lines
#--------------------------------
enter-body-join-mode             ! body = Shift-j

#Move within line commands
#--------------------------------
back-char                        ! body = h
back-char                        ! body = LtArrow
#back-char                       ! body = bksp     #Prob: Effects bksp in edit
forward-char                     ! body = l
forward-char                     ! body = RtArrow

forward-word                     ! body = w        #no before/after support.
forward-word                     ! body = Shift-w
back-word                        ! body = b        #no before/after support.
back-word                        ! body = Shift-b  #
forward-end-word                 ! body = e        #no before/after support.
forward-end-word                 ! body = Shift-e

beginning-of-line											  ! body = |
back-to-indentation                ! body = ^
end-of-line									        ! body = $
enter-body-goto-indent-previous-line-mode   !body = minus

#Move within tree commands (while focus is in body pane)
#-------------------------------------------------------
enter-body-goto-prev-visible-mode   ! body = Ctrl-k
enter-body-goto-prev-visible-mode   ! body = Ctrl-UpArrow
enter-body-contract-or-go-left-mode ! body = Ctrl-h
enter-body-contract-or-go-left-mode ! body = Ctrl-LtArrow
enter-body-expand-and-go-right-mode ! body = Ctrl-l
enter-body-expand-and-go-right-mode ! body = Ctrl-RtArrow
enter-body-goto-next-visible-mode   ! body = Ctrl-j
enter-body-goto-next-visible-mode   ! body = Ctrl-DnArrow

#Move within buffer commands
#--------------------------------
next-line                         ! body = j
next-line                         ! body = DnArrow
previous-line                     ! body = k
previous-line                     ! body = UpArrow

forward-sentence                  ! body = )
back-sentence                     ! body = (
enter-body-goto-after-paragraph-mode  ! body = }
enter-body-goto-before-paragraph-mode ! body = {

enter-body-g-mode                   ! body = g        #g commands - Goto line, reformat text)
enter-body-goto-end-of-buffer-mode  ! body = Shift-g

enter-body-match-mode               ! body = %

#Scroll commands
#--------------------------------
scroll-up-page                           ! body = Ctrl-b   #Scrolls full window
scroll-down-page                         ! body = Ctrl-f

scroll-up-half-page                      ! body = Ctrl-u   #should scroll 1/2
scroll-down-half-page                    ! body = Ctrl-d

scroll-up-line                           ! body = Ctrl-y   #should scroll 1 line
scroll-down-line                         ! body = Ctrl-e

#Find character commands
#--------------------------------
find-character                      ! body = f
backward-find-character             ! body = Shift-f

#search text commands (limited to current node's body text unless stated otherwise)
#---------------------------
enter-body-search-forward-mode      ! body = /        #Search forward within node's body text
enter-body-search-backward-mode     ! body = ?        #Search backward within node's body text
find-next                           ! body = n        #Find next (same scope, same direction)
find-prev                           ! body = Shift-n  #Find next (same scope, other direction)
enter-body-search-options-mode      ! body = Ctrl-/   #Change search options

#Replace [and find next] using paste buffer (clipboard)
#  Note: Scope and direction set by last search command '/', '?' or 'Ctrl-/'(scope only)
#--------------------------------
paste-text                          ! body = p        #To paste a line before current: use '|p'
paste-text                          ! body = Shift-p  #Paste text before cursor.
enter-body-paste-then-find-mode     ! body = Ctrl-p   #Replace then find next from last /,?

#Replace and find next 'simple' string (search direction taken from last use of '/' or '?')
enter-body-replace-string-mode      ! body = Alt-/    #Prompt for search &amp; replace string
replace-then-find                   ! body = Alt-p    #Replace then search (use after Alt-/)

#Mark and go to mark commands
#----------------------------
# point-to-register    ! body = m
# jump-to-register     ! body = quoteright  # '
# jump-to-register     ! body = quoteleft   # `

#Window commands
#--------------------------------
enter-vim-window-commands-mode      ! body = Ctrl-w
</t>
<t tx="ekr.20140721165014.19218">#Search forward within node
#Bind: /

--&gt; set-find-node-only
--&gt; search-forward
</t>
<t tx="ekr.20140721165014.19219">#Search forward within node
#Bind: /

--&gt; set-find-node-only
--&gt; search-backward
</t>
<t tx="ekr.20140721165014.19220">#Search forward within node
#Bind: /

--&gt; set-find-node-only
--&gt; search-forward
</t>
<t tx="ekr.20140721165014.19221">#Set search scope to search all nodes in current direction
#Bind: Ctrl-/

--&gt; set-silent-mode
--&gt; mode-help

enter-body-search-all-nodes-mode          = return
enter-body-search-all-nodes-mode          = a

enter-body-search-toggle-headline-mode    = h
enter-body-search-toggle-headline-mode    = o
enter-body-search-toggle-body-mode        = b
enter-body-search-toggle-mark-mode        = m
enter-body-search-toggle-regex-mode       = r
</t>
<t tx="ekr.20140721165014.19222">#Set search scope to search all nodes in current direction
#Bind: Ctrl-/ &lt;cr&gt;

--&gt; set-find-everywhere

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19223">#Set search scope to search all nodes in current direction
#Bind: Ctrl-/ h
#      Ctrl-/ o

--&gt; toggle-find-in-headline-option

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19224">#Set search scope to search all nodes in current direction
#Bind: Ctrl-/ b

--&gt; toggle-find-in-body-option

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19225">#Set search scope to search all nodes in current direction
#Bind: Ctrl-/ m

enter-body-search-toggle-mark-finds-mode   = f
enter-body-search-toggle-mark-changes-mode = c
</t>
<t tx="ekr.20140721165014.19226">#Set search scope to search all nodes in current direction
#Bind: Ctrl-/ m f

--&gt; toggle-find-mark-finds-option

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19227">#Set search scope to search all nodes in current direction
#Bind: Ctrl-/ m c

--&gt; toggle-find-mark-changes-option

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19228">#Set search scope to search all nodes in current direction
#Bind: Ctrl-/ r

--&gt; toggle-find-regex-option

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19229">#Specify search and replace string
#  then search in direction of last '/', '?' command within node
#  (follow with 'p' to replace or 'Ctrl-p' to replace and search)
#Bind: Alt-/

--&gt; set-find-node-only
--&gt; replace-string
</t>
<t tx="ekr.20140721165014.19230">#Paste then search in current direction
#  (Preceeded by '/' or '?' to find first occurance)
#Bind: Alt-p

--&gt; yank
--&gt; find-next

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19231">#Go to end of buffer
#Bind: G

--&gt; set-silent-mode
--&gt; end-of-buffer
--&gt; beginning-of-line   #vi puts curser in first column of last row

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19232">#Go to &lt;object&gt;
#Bind: g&lt;obj&gt;

--&gt; set-silent-mode
#--&gt; mode-help

enter-body-g-beginning-of-buffer-mode   ! body = g

#Reformat text - cursor moved to end of formated text
enter-body-g-q-mode                        ! body = q

#Reformat text - cursor remains at current location (not supported)
enter-body-g-w-mode                        ! body = w
</t>
<t tx="ekr.20140721165014.19233">#Go to top of buffer
#Bind: gg (Vim)
#Note: Vi key binding of '1G' not used. Bound numbers are not entered when editing.
#Note: Vim also supports 'gg' to go to top of buffer.
--&gt; set-silent-mode
--&gt; beginning-of-buffer

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19234">#Format text &lt;object&gt; (Moving cursor to end of formatted text)
#Bind: gq&lt;obj&gt;

fill-paragraph ! body = q		       #gqq - Format the entire paragraph
#Note: reformat-paragraph also exists; Seems to do the same thing

enter-body-g-wq-a-mode ! body = a		#gqa&lt;obj&gt; - Format all of the specified scope</t>
<t tx="ekr.20140721165014.19235">#Format text &lt;object&gt; - Keeping cursor at same location (not supported yet)
#Bind: gw&lt;obj&gt;

fill-paragraph ! body = w	#gww - Format the entire paragraph
#Note: reformat-paragraph also exists; Seems to do the same thing

enter-body-g-wq-a-mode ! body = a		#gqa&lt;obj&gt; - Format all of the specified scope</t>
<t tx="ekr.20140721165014.19236">#Format paragraph
#Bind: gqap

fill-paragraph ! body = p		#Format the entire paragraph
#Note: reformat-paragraph also exists; Seems to do the same thing
</t>
<t tx="ekr.20140721165014.19237">#Open new line below current line
#Bind: o

--&gt; set-silent-mode
--&gt; end-of-line
--&gt; insert-newline   #Enter insert mode

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19238">#Open new line above current line
#Bind: O

--&gt; set-silent-mode
--&gt; beginning-of-line
--&gt; insert-newline
--&gt; keyboard-quit
--&gt; previous-line
--&gt; set-insert-state

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19239">#Append text to end of current line
#Bind: A

--&gt; set-silent-mode
--&gt; end-of-line      #Delete the &lt;cr&gt;&lt;lf&gt; at the end of the line
--&gt; set-insert-state

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19240">#Insert text at first non-blank character in current line
#Bind: I

--&gt; set-silent-mode
--&gt; back-char        #Move cursor to cancel any selected text.
--&gt; forward-char     #  otherwise insert will replace selected text.
--&gt; back-to-indentation #cursor to beginning of first word in line
--&gt; set-insert-state

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19241">#Delete to the end of the current line
#Bind: D
#Note: If cursor at end of line, command will delete next line

--&gt; set-silent-mode
--&gt; end-of-line-extend-selection
--&gt; kill-region

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19242">#Delete &lt;obj&gt; command
#Bind: d&lt;obj&gt;

--&gt; set-silent-mode
#--&gt; mode-help

enter-body-delete-line-mode      = d
enter-body-delete-selected-mode  = return       #Delete selected text(exit select mode)


enter-body-delete-to-end-of-word-mode           = w
enter-body-delete-to-end-of-word-mode           = Shift-w
enter-body-delete-to-begin-of-word-mode         = b
enter-body-delete-to-begin-of-word-mode         = Shift-b
enter-body-delete-to-end-of-sentence-mode       = )
enter-body-delete-to-beginning-of-sentence-mode = (
enter-body-delete-to-end-of-paragraph-mode      = }
enter-body-delete-to-beginning-of-paragraph-mode  = {
enter-body-delete-section-mode                  = %
enter-body-delete-to-g-object-mode              = g
enter-body-delete-to-end-of-buffer-mode         = shift-g

enter-body-delete-to-char-mode     = t</t>
<t tx="ekr.20140721165014.19243">#Deleted current line
#Bind: dd
#Note: Last line in file will not be deleted.

--&gt; set-silent-mode

--&gt; beginning-of-line               #   on beginning of current line

--&gt; next-line-extend-selection      #Select line and the &lt;cr&gt;
--&gt; kill-region                     #Remove text, place in paste buffer

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19244">#Deleted to end of word
#Bind: dw
#Note: Travels past end of line.
#Note: Forward-word-extend-selection not used, it consumes all
#      trailing non-alpha-numeric characters.

--&gt; set-silent-mode
--&gt; split-line       #Split word (kill-word only deletes whole words)
--&gt; kill-word        #Delete to end of word, copies text into paste-buffer
--&gt; back-char        #Restore split line
--&gt; delete-char      #

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19245">#Delete to beginning of word.i
#Bind: db
#Note: Travels past beginning of line.

--&gt; set-silent-mode
--&gt; split-line
--&gt; back-word        #Problem: doesn't stop at beginning of line
--&gt; kill-word
--&gt; delete-char      #Restore split line

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19246">#Delete to end of sentence
#Bind: d)

--&gt; set-silent-mode
--&gt; forward-sentence-extend-selection
--&gt; kill-region

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19247">#Delete to beginning of sentence
#Bind: d(

--&gt; set-silent-mode
--&gt; back-sentence-extend-selection
--&gt; kill-region

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19248">#Delete to end of paragraph
#Bind: d}

--&gt; set-silent-mode
--&gt; forward-paragraph-extend-selection
--&gt; back-char-extend-selection
--&gt; back-char-extend-selection
--&gt; kill-region

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19249">#Delete to beginning of paragraph
#Bind: d{

--&gt; set-silent-mode
--&gt; back-paragraph-extend-selection
--&gt; forward-char-extend-selection
--&gt; kill-region

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19250">#Delete to 'g' type object (ex: gg is 1st line in buffer)
#Bind: dg

enter-body-delete-to-beginning-of-buffer-mode     = g
</t>
<t tx="ekr.20140721165014.19251">#Delete to beginning of buffer (including all of current line)
#Bind: dgg

--&gt; set-silent-mode

--&gt; end-of-line
--&gt; forward-char
#--&gt; beginning-of-line

--&gt; beginning-of-buffer-extend-selection
--&gt; kill-region

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19252">#Delete to end of buffer
#Bind: dG

--&gt; set-silent-mode

--&gt; beginning-of-line
--&gt; back-char

--&gt; end-of-buffer-extend-selection
--&gt; kill-region
--&gt; beginning-of-line

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19253">#Delete from current bracket type to its apposing bracket
#Bind: d%

--&gt; set-silent-mode

--&gt; set-extend-mode
--&gt; match-brackets
--&gt; clear-extend-mode

--&gt; kill-region

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19254">#Delete to character
#Bind: dt&lt;character&gt;
#Note: Character search not limited to current line.

--&gt; set-silent-mode
--&gt; zap-to-character

</t>
<t tx="ekr.20140721165014.19255">#Delete selected text
#Bind: d&lt;cr&gt;


#Copy to clipboard (copy-text doesn't work in modes)
--&gt; kill-region

#Turn off select mode
--&gt; clear-extend-mode

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19256">#Yank text to the end of the current line
#Bind: Y

--&gt; set-silent-mode
--&gt; end-of-line-extend-selection
--&gt; kill-region
--&gt; yank
--&gt; back-char
--&gt; forward-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19257">#Yank &lt;obj&gt; (Leo's copy-text)
#Bind: y&lt;obj&gt;
#Note: yank-to-character not supported.  Can not issue yank command.
      #Leo's zap-to-character must be last command (needs user input)
      #Issue 'dt&lt;char&gt;' followed by 'p'
      
--&gt; set-silent-mode
#--&gt; mode-help

enter-body-yank-selected-mode                     = return #Yank selected text(exit select mode)
enter-body-yank-line-mode                         = y
enter-body-yank-to-beginning-of-next-word-mode    = w
enter-body-yank-to-beginning-of-current-word-mode = b
enter-body-yank-to-end-of-sentence-mode           = )
enter-body-yank-to-beginning-of-sentence-mode     = (
enter-body-yank-to-end-of-paragraph-mode          = }
enter-body-yank-to-beginning-of-paragraph-mode    = {
enter-body-yank-to-g-object-mode                  = g
enter-body-yank-to-end-of-buffer-mode             = Shift-g
enter-body-yank-section-mode                      = %

#Yank to user specified character
#Workaround used until @mode's execute commands after
#command requesting user input.
#follow command with "y&lt;cr&gt;" to yank &amp; "v" to unselect
find-character-extend-selection                 = t
backward-find-character-extend-selection        = Shift-t
</t>
<t tx="ekr.20140721165014.19258">#Yank current line
#Bind: yy
#Note: Problem yanking empty line. Also yanks line below it.
#Note: Problem yanking last line.  Does not yank a trailing &lt;cr&gt;

--&gt; set-silent-mode

#body-delete-line macro
--&gt; set-silent-mode
--&gt; beginning-of-line
--&gt; end-of-line-extend-selection    #Select all text on current line and
--&gt; forward-char-extend-selection   #  select the &lt;cr&gt;
--&gt; kill-region                     #Remove text, place in paste buffer

#Put text back
--&gt; yank
#Clear selection
--&gt; back-char
--&gt; beginning-of-line
#--&gt; forward-char

--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19259">#Yank to beginning of next word
#Bind: dw
#Note: Travels past end of line.
#Note: Forward-word-extend-selection not used, it consumes all
#      trailing non-alpha-numeric characters.

--&gt; set-silent-mode
--&gt; split-line
--&gt; kill-word        #Delete to beginning of next word, copies text into paste-buffer
--&gt; back-char        #Restore split line
--&gt; delete-char      #

#Put text back
--&gt; yank
#Clear selection
--&gt; back-char
--&gt; forward-char


--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19260">#Yank to beginning of current word.
#Bind: yb
#Note: Travels past beginning of line.
#Note: AlphaNumeric word in contact with a non-alphanumeric word
      #is not handled correctly. Can cause text to be deleted or replicated.

--&gt; set-silent-mode
--&gt; split-line
--&gt; back-word        #Problem: doesn't stop at beginning of line
--&gt; kill-word
--&gt; delete-char      #Restore split line

#Put text back
--&gt; yank
#Clear selection
--&gt; back-char
--&gt; forward-char


--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19261">#Yank to end of sentence
#Bind: y)

--&gt; set-silent-mode
--&gt; forward-sentence-extend-selection
--&gt; kill-region
#Put text back
--&gt; yank
#Clear selection
--&gt; back-char
--&gt; forward-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19262">#Yank to beginning of sentence
#Bind: y(

--&gt; set-silent-mode
--&gt; back-sentence-extend-selection
--&gt; kill-region
#Put text back
--&gt; yank
#Clear selection
--&gt; back-char
--&gt; forward-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19263">#Yank to end of paragraph
#Bind: y}
#Note: Yanking paragraph at end of body will not yank 1 or
#      two characters (Characters after final cursor position)

--&gt; set-silent-mode
--&gt; forward-paragraph-extend-selection
--&gt; back-char-extend-selection
--&gt; back-char-extend-selection
--&gt; kill-region
#Put text back
--&gt; yank
#Clear selection
--&gt; back-char
--&gt; forward-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19264">#Yank to beginning of paragraph
#Bind: y{

--&gt; set-silent-mode
--&gt; back-paragraph-extend-selection
--&gt; forward-char-extend-selection
--&gt; kill-region
#Put text back
--&gt; yank
#Clear selection
--&gt; back-char
--&gt; forward-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19265">#Yank to 'g' type object (ex: gg is 1st line in buffer)
#Bind: yg

enter-body-yank-to-beginning-of-buffer-mode     = g
</t>
<t tx="ekr.20140721165014.19266">#Yank to beginning of buffer
#Bind: ygg

--&gt; set-silent-mode

--&gt; end-of-line
--&gt; forward-char
#--&gt; beginning-of-line

--&gt; beginning-of-buffer-extend-selection
--&gt; kill-region
--&gt; yank

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19267">#Yank to end of buffer
#Bind: yG

--&gt; set-silent-mode

--&gt; beginning-of-line
--&gt; back-char

--&gt; end-of-buffer-extend-selection
--&gt; kill-region
--&gt; yank                #Put text back
--&gt; beginning-of-line

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19268">#Yank from current bracket type to its opposing bracket
#Bind: y%

--&gt; set-silent-mode

--&gt; set-extend-mode
--&gt; match-brackets
--&gt; clear-extend-mode

#Copy to clipboard (copy-text doesn't work in modes)
--&gt; kill-region
--&gt; yank

#Remove highlighting of selection
--&gt; back-char
--&gt; forward-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19269">#Yank selected text
#Bind: y&lt;cr&gt;


#Copy to clipboard (copy-text doesn't work in modes)
--&gt; kill-region
--&gt; yank

#Turn off select mode
--&gt; clear-extend-mode

#Remove highlighting of selection
--&gt; back-char
--&gt; forward-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19270">#Change to end of line
#Bind: C
#Note: If cursor at end of line, command will delete next line and enter insert mode
#      Use 'i' command instead (enter insert mode)

--&gt; set-silent-mode
--&gt; end-of-line-extend-selection
--&gt; kill-region

--&gt; set-insert-state           #Enter insert mode</t>
<t tx="ekr.20140721165014.19271">#Change &lt;object&gt;
#Bind: c&lt;obj&gt;
#Note: change-to-character not supported.  Can not issue set-insert-state.
      #Leo's zap-to-character must be last command (needs user input)
      #Emulate command by issuing 'dt&lt;char&gt;' followed by 'i'

--&gt; set-silent-mode
#--&gt; mode-help

enter-body-change-selected-mode                     = return #Change selected text(exit select mode)
enter-body-change-line-mode                         = c
enter-body-change-to-end-of-word-mode               = w
enter-body-change-to-beginning-of-word-mode         = b
enter-body-change-to-end-of-sentence-mode           = )
enter-body-change-to-beginning-of-sentence-mode     = (
enter-body-change-to-end-of-paragraph-mode          = }
enter-body-change-to-beginning-of-paragraph-mode    = {
enter-body-change-to-g-object-mode                  = g
enter-body-change-to-end-of-buffer-mode             = Shift-g
enter-body-change-section-mode                      = %

#Change to specified character
#Workaround used until @mode's execute commands after
#command requesting user input.
#follow command with "i" to change the text.
find-character-extend-selection                 = t
backward-find-character-extend-selection        = Shift-t
</t>
<t tx="ekr.20140721165014.19272">#Change to end of line
#Bind: cc
#Note: Performs body-delete-line followed by a an insert-newline

#Note: Problem deleting empty line. Also deletes line below it.
      #Use Join function instead (key 'J')
#Note: Problem deleting last line.  Also deletes line above it.
      #Invoke undo one time to restore line ('u' key)

--&gt; set-silent-mode
--&gt; beginning-of-line
--&gt; end-of-line-extend-selection    #Select all text on current line and
--&gt; forward-char-extend-selection   #  select the &lt;cr&gt;
--&gt; kill-region                     #Remove text, place in paste buffer

--&gt; set-insert-state</t>
<t tx="ekr.20140721165014.19273">#Change to end of word
#Bind: cw
#Note: Travels past end of line.
#Note: forward-word-extend-selection not used,
#      it skips non-alphanumeric characters.

--&gt; set-silent-mode
--&gt; split-line
--&gt; kill-word        #Delete to end of word, copies text into paste-buffer
--&gt; back-char        #Restore split line
--&gt; delete-char      #

--&gt; set-insert-state</t>
<t tx="ekr.20140721165014.19274">#Change to beginning of word
#Bind: cb

--&gt; set-silent-mode
--&gt; split-line
--&gt; back-word        #Problem: doesn't stop at beginning of line
--&gt; kill-word
--&gt; delete-char      #Restore split line

--&gt; set-insert-state</t>
<t tx="ekr.20140721165014.19275">#Delete to end of sentence
#Bind: d)

--&gt; set-silent-mode
--&gt; forward-sentence-extend-selection
--&gt; kill-region
--&gt; set-insert-state

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19276">#Delete to beginning of sentence
#Bind: d(

--&gt; set-silent-mode
--&gt; back-sentence-extend-selection
--&gt; kill-region
--&gt; set-insert-state

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19277">#Delete to end of paragraph
#Bind: d}

--&gt; set-silent-mode
--&gt; forward-paragraph-extend-selection
--&gt; back-char-extend-selection
--&gt; back-char-extend-selection
--&gt; kill-region
--&gt; set-insert-state

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19278">#Delete to beginning of paragraph
#Bind: d{

--&gt; set-silent-mode
--&gt; back-paragraph-extend-selection
--&gt; forward-char-extend-selection
--&gt; kill-region
--&gt; set-insert-state

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19279">#Change to 'g' type object (ex: gg is 1st line in buffer)
#Bind: cg

enter-body-change-to-beginning-of-buffer-mode     = g
</t>
<t tx="ekr.20140721165014.19280">#Change to beginning of buffer
#Bind: cgg

--&gt; set-silent-mode

--&gt; end-of-line
--&gt; forward-char
#--&gt; beginning-of-line

--&gt; beginning-of-buffer-extend-selection
--&gt; kill-region
--&gt; set-insert-state

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19281">#Delete to end of buffer
#Bind: cG

--&gt; set-silent-mode

--&gt; beginning-of-line
--&gt; back-char

--&gt; end-of-buffer-extend-selection
--&gt; kill-region

--&gt; insert-newline   #Enter insert mode

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19282">#Change from current bracket type its matching bracket type
#Bind: c%

--&gt; set-silent-mode

--&gt; set-extend-mode
--&gt; match-brackets
--&gt; clear-extend-mode

--&gt; kill-region
--&gt; yank             #Show what text will be replaced

--&gt; set-insert-state

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19283">#Yank selected text
#Bind: c&lt;cr&gt;


#Delete selected text (keeping copy in paste buffer)
--&gt; kill-region

#Turn off select mode
--&gt; clear-extend-mode

--&gt; set-insert-state

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19284">#Substitute character
#Bind: s

--&gt; set-silent-mode
--&gt; delete-char
--&gt; set-insert-state           #Enter insert mode</t>
<t tx="ekr.20140721165014.19285">#Substitute line
#Bind: S

--&gt; set-silent-mode
--&gt; kill-line
--&gt; set-insert-state           #Enter insert mode</t>
<t tx="ekr.20140721165014.19286">#Indent &lt;object&gt;
#Bind: &gt;&lt;obj&gt;

--&gt; set-silent-mode

enter-body-indent-line-mode = greater
enter-body-indent-to-end-of-sentence-mode = )
enter-body-indent-to-beginning-of-sentence-mode = (
enter-body-indent-to-end-of-paragraph-mode = }
enter-body-indent-to-beginning-of-paragraph-mode = {
enter-body-indent-to-beginning-of-buffer-mode = g
enter-body-indent-to-end-of-buffer-mode = Shift-g
</t>
<t tx="ekr.20140721165014.19287">#Indent line
#Bind: &gt;&gt;

--&gt; set-silent-mode
--&gt; back-to-indentation #cursor to beginning of first word in line
--&gt; forward-char-extend-selection

--&gt; indent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19288">#Indent to beginning of sentence
#Bind: &gt;(

--&gt; forward-sentence-extend-selection
--&gt; indent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19289">#Indent to beginning of sentence
#Bind: &gt;)

--&gt; back-sentence-extend-selection
--&gt; indent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19290">#Indent to end of paragraph
#Bind: &gt;}

--&gt; forward-paragraph-extend-selection
--&gt; back-char-extend-selection
--&gt; indent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19291">#Indent to beginning of paragraph
#Bind: &gt;{

--&gt; back-paragraph-extend-selection
--&gt; forward-char-extend-selection
--&gt; indent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19292">#Indent to end of buffer
#Bind: &gt;G

--&gt; set-silent-mode
--&gt; beginning-of-buffer-extend-selection
--&gt; indent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19293">#Indent to end of buffer
#Bind: &gt;G

--&gt; set-silent-mode
--&gt; end-of-buffer-extend-selection
--&gt; indent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19294">#Unindent object
#Bind: &lt;&lt;obj&gt;

--&gt; set-silent-mode

enter-body-unindent-less-mode = less

enter-body-unindent-to-end-of-sentence-mode = )
enter-body-unindent-to-beginning-of-sentence-mode = (
enter-body-unindent-to-end-of-paragraph-mode = }
enter-body-unindent-to-beginning-of-paragraph-mode = {
enter-body-unindent-to-beginning-of-buffer-mode = g
enter-body-unindent-to-end-of-buffer-mode = Shift-g
</t>
<t tx="ekr.20140721165014.19295">#Unindent current line
#Bind: &lt;&lt;
#Note: Unindents to first column instead of previous tab stop

#--&gt; set-silent-mode
#--&gt; back-to-indentation #cursor to beginning of first word in line

--&gt; unindent-region
#--&gt; delete-indentation
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19296">#Indent to end of paragraph
#Bind: &lt;}

--&gt; forward-paragraph-extend-selection
--&gt; back-char-extend-selection
--&gt; unindent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19297">#Indent to beginning of paragraph
#Bind: &lt;{

--&gt; back-paragraph-extend-selection
--&gt; forward-char-extend-selection
--&gt; unindent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19298">#Indent to end of sentence
#Bind: &lt;)

--&gt; forward-sentence-extend-selection
--&gt; unindent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19299">#Indent to beginning of sentence
#Bind: &lt;(

--&gt; back-sentence-extend-selection
--&gt; unindent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19300">#Unindent to end of buffer
#Bind: &lt;G

--&gt; set-silent-mode
--&gt; end-of-buffer-extend-selection
--&gt; unindent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19301">#Unindent to end of buffer
#Bind: &lt;G

--&gt; set-silent-mode
--&gt; beginning-of-buffer-extend-selection
--&gt; unindent-region
--&gt; back-char
--&gt; forward-char
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19302">#Goto first visible charecter on previous line
#Bind: -
#Note: No indent performed, using back-char, forward-word will
#      not skip over blank lines, goes to 2nd word on first line.

--&gt; set-silent-mode
--&gt; beginning-of-line		#Now at beginning of current line.

--&gt; previous-line
# --&gt; back-char
# --&gt; forward-word			#Skips over visible non-alpha-numeric characters


--&gt; exit-named-mode

</t>
<t tx="ekr.20140721165014.19303">#Go to end of paragraph
#Bind: }

--&gt; set-silent-mode

--&gt; forward-char        #Be sure cursor in a paragraph
--&gt; forward-paragraph
--&gt; back-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19304">#Go to beginning of paragraph
#Bind: {

--&gt; set-silent-mode

--&gt; back-char        #Be sure cursor in a paragraph
--&gt; back-paragraph
--&gt; forward-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19305">#Join next line to end of current line
#Bind: J

--&gt; set-silent-mode
--&gt; end-of-line      #Delete the &lt;cr&gt;&lt;lf&gt; at the end of the line
--&gt; delete-char

--&gt; exit-named-mode

</t>
<t tx="ekr.20140721165014.19306">#Goto matching bracket: () [] {}
#Bind: %

--&gt; set-silent-mode
--&gt; match-brackets
--&gt; forward-char
--&gt; back-char

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19307"></t>
<t tx="ekr.20140721165014.19308">--&gt; focus-to-tree
--&gt; goto-next-visible
--&gt; edit-headline
--&gt; focus-to-body
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19309">--&gt; focus-to-tree
--&gt; goto-prev-visible
--&gt; edit-headline
--&gt; focus-to-body
--&gt; exit-named-mode
</t>
<t tx="ekr.20140721165014.19310">--&gt; focus-to-tree
--&gt; expand-and-go-right
--&gt; edit-headline
--&gt; focus-to-body

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19311">--&gt; focus-to-tree
--&gt; contract-or-go-left
--&gt; edit-headline
--&gt; focus-to-body

--&gt; exit-named-mode</t>
<t tx="ekr.20140721165014.19312">#Window commands
#Bind: Ctrl-w

add-editor           = s   #Open another view to current node
add-editor           = n   #Open another view to current node

cycle-editor-focus   = w   #Vim goes to next below-right window (wraps)
cycle-editor-focus   = p   #Vim goes to previous window with focus
cycle-editor-focus   = k   #Vim goes to window above current window
cycle-editor-focus   = j   #Vim goes to window below current window

delete-editor        = c   #Close current window (if more than one)
delete-editor        = q   #Close current window (if more than one)
</t>
<t tx="ekr.20140721165014.19313">This node and its descendants contains settings that make Leo work somewhat
like vim.

To enable vim emulation, place a copy this "@keys Vim bindings" node and
its sub-nodes into your myLeoSettings.leo file under the "@settings" node.
</t>
<t tx="ekr.20140912072521.19153"></t>
<t tx="ekr.20140912072521.19154">Leo's traditional tree color.</t>
<t tx="ekr.20140912072521.19160">/*
@language css

    =========== Leo's new, fully parameterized, stylesheet. ===========
    
    This stylesheet is responsible for most of Leo's appearance.
    This stylesheet is composed of this nodes and all its descendants, in outline order.
    
    Leo inserts the settings in the tree "Qt Gui Stylesheet settings" into this stylesheet.
    Modify those settings, *not* this stylesheet.
    
    About Qt stylesheets: http://qt-project.org/doc/qt-4.8/stylesheet.html
*/

</t>
<t tx="ekr.20140912073148.19150">'''Converts p.b, that is, "New/Changed selectors" to settings and organizer nodes.'''
g.cls()
safe = False
for s in g.splitLines(p.b):
    if s.strip() and not s.startswith(' '):
        for tag in ('#','@color','@string'):
            if s.startswith(tag):
                if tag == '#':
                    h = s[1:].strip().rstrip('.')
                else:
                    h = tag + ' ' + s[len(tag):].strip()
                if safe:
                    print('create: %s' % h)
                else:
                    p2 = p.insertAsLastChild()
                    p2.h = h
                break
        else:
            print('unexpected line: %s' % s)
c.redraw()
@color
@language python</t>
<t tx="ekr.20140912075503.19262">Important: changing the Basic Font settings below should be all you need to
do at first. All other font settings are defined in terms of the basic fonts.</t>
<t tx="ekr.20140912075503.19263"></t>
<t tx="ekr.20140912075503.19264">**Important**: This should be set by each user.</t>
<t tx="ekr.20140912075503.19265">valid values are: normal,bold,100,..,900</t>
<t tx="ekr.20140912075503.19266">Valid values are: normal,italic,oblique</t>
<t tx="ekr.20140912075503.19268"></t>
<t tx="ekr.20140912075503.19269"></t>
<t tx="ekr.20140912075503.19270"></t>
<t tx="ekr.20140912075503.19271"></t>
<t tx="ekr.20140912075503.19272"></t>
<t tx="ekr.20140912075503.19273"></t>
<t tx="ekr.20140912075503.19274">Should be white: it shows in the log pane.</t>
<t tx="ekr.20140912075503.19275"></t>
<t tx="ekr.20140912075503.19276"></t>
<t tx="ekr.20140912075503.19277"></t>
<t tx="ekr.20140912075503.19278">DejaVu Sans Mono</t>
<t tx="ekr.20140912075503.19279"></t>
<t tx="ekr.20140912075503.19280"></t>
<t tx="ekr.20140912075503.19281"></t>
<t tx="ekr.20140912075503.19282"></t>
<t tx="ekr.20140912075503.19283"></t>
<t tx="ekr.20140912075503.19284"></t>
<t tx="ekr.20140912075503.19285"></t>
<t tx="ekr.20140912075503.19288"></t>
<t tx="ekr.20140912075503.19289"></t>
<t tx="ekr.20140912075503.19290"></t>
<t tx="ekr.20140912075503.19291"></t>
<t tx="ekr.20140912075503.19292"></t>
<t tx="ekr.20140912075503.19293"></t>
<t tx="ekr.20140912075503.19294">cornsilk

</t>
<t tx="ekr.20140912075503.19295"></t>
<t tx="ekr.20140912075503.19296"></t>
<t tx="ekr.20140912075503.19297"></t>
<t tx="ekr.20140912075503.19298"></t>
<t tx="ekr.20140912075503.19299"></t>
<t tx="ekr.20140912075503.19300"></t>
<t tx="ekr.20140912075503.19301"></t>
<t tx="ekr.20140912075503.19302"></t>
<t tx="ekr.20140912075503.19303"></t>
<t tx="ekr.20140912075503.19304">Was @LeoYellow</t>
<t tx="ekr.20140912075503.19305"></t>
<t tx="ekr.20140912075503.19306"></t>
<t tx="ekr.20140912075503.19307"></t>
<t tx="ekr.20140912075503.19308"></t>
<t tx="ekr.20140912075503.19309"></t>
<t tx="ekr.20140912075503.19310"></t>
<t tx="ekr.20140912075503.19311"></t>
<t tx="ekr.20140912075503.19312"></t>
<t tx="ekr.20140912075503.19313"></t>
<t tx="ekr.20140912075503.19314"></t>
<t tx="ekr.20140912075503.19315"></t>
<t tx="ekr.20140912075503.19316"></t>
<t tx="ekr.20140912075503.19317"></t>
<t tx="ekr.20140912075503.19318"></t>
<t tx="ekr.20140912075503.19319"></t>
<t tx="ekr.20140912075503.19320"></t>
<t tx="ekr.20140912075503.19321"></t>
<t tx="ekr.20140912075503.19322"></t>
<t tx="ekr.20140912075503.19323"></t>
<t tx="ekr.20140912075503.19324"></t>
<t tx="ekr.20140912075503.19325"></t>
<t tx="ekr.20140912075503.19326"></t>
<t tx="ekr.20140912075503.19327"></t>
<t tx="ekr.20140912075503.19328"></t>
<t tx="ekr.20140912075503.19329"></t>
<t tx="ekr.20140912075503.19330"></t>
<t tx="ekr.20140912075503.19331"></t>
<t tx="ekr.20140912075503.19332"></t>
<t tx="ekr.20140912075503.19333"></t>
<t tx="ekr.20140912075503.19334"></t>
<t tx="ekr.20140912075503.19335"></t>
<t tx="ekr.20140912075503.19336"></t>
<t tx="ekr.20140912075503.19337"></t>
<t tx="ekr.20140912075503.19338"></t>
<t tx="ekr.20140912075503.19339"></t>
<t tx="ekr.20140912075503.19340"></t>
<t tx="ekr.20140912075503.19341">@font-family</t>
<t tx="ekr.20140912075503.19342">10pt</t>
<t tx="ekr.20140912075503.19343">@font-weight</t>
<t tx="ekr.20140912075503.19344"> @font-style</t>
<t tx="ekr.20140912075503.19345"></t>
<t tx="ekr.20140912075503.19346"></t>
<t tx="ekr.20140912075503.19347"></t>
<t tx="ekr.20140912075503.19348"></t>
<t tx="ekr.20140912075503.19349"></t>
<t tx="ekr.20140912075503.19350">None: Use the default platform font.</t>
<t tx="ekr.20140912075503.19351"></t>
<t tx="ekr.20140912075503.19352"></t>
<t tx="ekr.20140912075503.19353"></t>
<t tx="ekr.20140912075503.19355"></t>
<t tx="ekr.20140912075503.19356"></t>
<t tx="ekr.20140912075503.19357"></t>
<t tx="ekr.20140912075503.19358"></t>
<t tx="ekr.20140912075503.19359"></t>
<t tx="ekr.20140912075503.19360"></t>
<t tx="ekr.20140912075503.19361"></t>
<t tx="ekr.20140912075503.19362"></t>
<t tx="ekr.20140912075503.19363"></t>
<t tx="ekr.20140912075503.19364"></t>
<t tx="ekr.20140912075503.19365">These must be @string settings, even though they do affect colors.</t>
<t tx="ekr.20140912075503.19366"></t>
<t tx="ekr.20140912075503.19367"></t>
<t tx="ekr.20140912075503.19368"></t>
<t tx="ekr.20140912075503.19369">@language rest
@wrap

This tree contains settings that are inserted style sheets. For example,
given the setting::

    @color body-bg = white
    
Leo will substitute "white" everywhere that "@body-bg" appears in the following two trees:

    @data qt-gui-plugin-style-sheet
    @data qt-gui-user-style-sheet

Many users will want to change the settings in the Fonts section, especially these:

- @string font-size:
  The base font size, the largest of the font-size settings.
- @string medium-font-size:
  An intermediate font sized used by default in the Find Panel.
- @string small-font-size:
  A small font size used in buttons.
</t>
<t tx="ekr.20140912105440.19376">'''Execute style-reload'''
c.k.simulateCommand('style-reload')</t>
<t tx="ekr.20140915194122.19458">/* ========== Body pane ========== */

QTextEdit#richTextEdit {
    background-color:           @body-bg;
    color:                      @body-fg;
    selection-color:            @body-sel-fg;
    selection-background-color: @body-sel-bg;
    font-family:                @body-font-family;
    font-size:                  @font-size-body;
    /* Don't use body-font-size for the font-size. */
    font-weight:                @body-font-weight;
    font-style:                 @body-font-style;
}

QTextEdit#bigtextwarning {
    background-color: red; /* No longer used */
}</t>
<t tx="ekr.20140915194122.19459">/* ========== Components of the Find Tab ========== */

QWidget#findTab {
    background-color: @find-tab-bg;
}

QLabel#findHeading, QLabel#findHelp {
    font-family:    @find-font-family;
    font-size:      @find-font-size; 
    font-weight:    @find-font-weight;
    font-style:     @find-font-style; 
}

QLabel#findLabel, QLabel#changeLabel {
    font-family:    @find-font-family;
    font-size:      @find-font-size;
    font-weight:    @find-font-weight;
    font-style:     @find-font-style;
}

QLineEdit#findPattern, QLineEdit#findChange {
    font-family:    @find-pattern-font-family;
    font-size:      @find-font-size;
    font-weight:    @find-font-weight;
    font-style:     @find-font-style;
}

QCheckBox, QRadioButton {
    /* For the Find Tab. */
    font-family:    @checkbox-font-family;
    font-size:      @checkbox-font-size;
}
</t>
<t tx="ekr.20140915194122.19461">/* ========== The log pane &amp; other text widgets ========== */

QTextEdit:focus {
  border-color: @focused-border-focus-color; 
}

QTextEdit {
    border-color:               @focused-border-unfocus-color; 
    border-style:               @focused-border-style;
    border-width:               @focused-border-width; 
    background-color:           @log-bg;
    color:                      @log-fg;
    selection-color:            @log-sel-fg;
    selection-background-color: @log-sel-bg;
    font-family:                @log-font-family;
    font-size:                  @log-font-size;
    font-weight:                @log-font-weight;
    font-style:                 @log-font-style;
}
</t>
<t tx="ekr.20140915194122.19462">/* ==========  Minibuffer ========== */

/* ----- The minibuffer itself ----- */

QLineEdit#lineEdit {
    color:                      @minibuffer-fg;
    background-color:           @minibuffer-bg;
    selection-color:            @minibuffer-sel-fg;
    selection-background-color: @minibuffer-sel-bg;
    font-family:                @minibuffer-font-family;
    font-size:                  @minibuffer-font-size;
    font-weight:                @minibuffer-font-weight;
    font-style:                 @minibuffer-font-style;
}

/* ----- The label of the minibuffer ----- */

QLabel#minibufferLabel {
    border:         @minibuffer-border;
    margin:         @minibuffer-margin;
    font-family:    @minibuffer-font-family;
    font-size:      @minibuffer-font-size;
    font-weight:    @minibuffer-font-weight;
    font-style:     @minibuffer-font-style;
}

/* ----- Minibuffer ----- */

QLineEdit#lineEdit[style_class ~= 'minibuffer_warning'] {
    background-color: @minibuffer_warning_color;
}

QLineEdit#lineEdit[style_class ~= 'minibuffer_error'] {
    color: @minibuffer_error_color;
    background-color: @minibuffer_warning_color;
}
</t>
<t tx="ekr.20140915194122.19463"></t>
<t tx="ekr.20140915194122.19464">/* ========== bookmarks.py plugin ========== */

#show_bookmarks QPushButton {
    color:              @bookmarks_base_color;
    margin:             @bookmarks_base_margin;
    padding:            @bookmarks_base_padding;
    border:             @bookmarks_base_border;
    font-family:        @bookmarks_base_family;
    font-size:          @bookmarks_base_size;
    font-style:         @bookmarks_base_style;
    font-weight:        @bookmarks_base_weight;
    text-decoration:    @bookmarks_base_decoration;
}

#show_bookmarks QPushButton[style_class~='bookmark_children'] {
    color:              @bookmarks_children_color;
    font-family:        @bookmarks_children_family;
    font-size:          @bookmarks_children_size;
    font-weight:        @bookmarks_children_weight;
    text-decoration:    @bookmarks_children_decoration;
}

#show_bookmarks QPushButton[style_class~='bookmark_expanded'] {
    font-size:          @bookmarks_expanded_size;
    color:              @bookmarks_expanded_color;
    font-style:         @bookmarks_expanded_style;
    font-weight:        @bookmarks_expanded_weight;
    text-decoration:    @bookmarks_expanded_decoration;
}

#show_bookmarks QPushButton[style_class~='bookmark_current'] {
    font-size:          @bookmarks_current_size;
    color:              @bookmarks_current_color;
    font-style:         @bookmarks_expanded_style;
    font-weight:        @bookmarks_current_weight;
    text-decoration:    @bookmarks_current_decoration;
}
</t>
<t tx="ekr.20140915194122.19465">/* ========== screencast.py plugin========== */

QPlainTextEdit#screencastcaption {
    background-color:   @screencast-bg;
    font-family:        @screencast-font-family;
    font-size:          @screencaset-font-size;
    font-weight:        @screencast-font-weight;
    font-style:         @screencaset-font-style;
}
</t>
<t tx="ekr.20140915194122.19466">/*  ========== Dialogs (QLabel) ========== 

    Use care when changing these settings: they are used for dialog text. 
*/

QLabel {
    border:         @dialog-border;
    margin:         @dialog-margin;
    font-family:    @dialog-font-family;
    font-size:      @dialog-font-size;
    font-weight:    @dialog-font-weight;
    font-style:     @dialog-font-style;
}

QCheckBox#TipCheckbox {
    background: lightgrey;
}
</t>
<t tx="ekr.20140915194122.19467">/* ========== Buttons ========== 

    Examples::
    
        QPushButton#&lt;button text&gt;-button { &lt;style&gt; }
        QPushButton[button_kind="&lt;button kind&gt;"] { &lt;style&gt; }
*/

/*
    Default for all buttons.
    If you specify the size, you should also specify the font.
*/

/* -----
QPushButton {
    font-family: at-push-button-font-family;
    font-size:   at-push-button-font-size;
}
----- */

QPushButton[button_kind="at-button"] {
    /* Buttons created by @button nodes. */
    background-color: @at-button-btn-bg;
}
QPushButton[button_kind="debug-script"] {
    background-color: @debug-script-btn-bg;
}
QPushButton[button_kind="generic-button"] {
    /* The default styling for buttons. */
    background-color: @generic-button-btn-bg;
}
QPushButton[button_kind="run-script"] {
    /* The singleton run-script button. */
    background-color: @run-script-btn-bg;
}
QPushButton[button_kind="script-button"] {
    /* Buttons created by the script-button button. */
    background-color: @script-button-btn-bg;
}
QPushButton#script-button-button { 
    /* The singleton script-button button. */
    background-color: @script-button-button-btn-bg;
}
</t>
<t tx="ekr.20140915194122.19468">/* ========== interact.py plugin ========== */

QPushButton[button_kind="interact"] {
    /* Buttons from the interact plugin. */
    background-color: @interact-btn-bg;
}
</t>
<t tx="ekr.20140915194122.19469">/* ========== quickmove.py plugin ========== */

QPushButton[button_kind="quick-move"] { 
    /* Buttons from the quickmove plugin. */
    background-color: @quick-move-btn-bg;
}</t>
<t tx="ekr.20140915194122.19470">/* ========== Widgets ========== */

/* ----- Destroys other background colors!
QFrame {
    background-color: at-frame-bg;
}
----- */

QScrollArea {
    background-color:   @scroll-area-bg;
}

QTabbedWidget {
    background-color:   @tabbed-widget-bg;
}

QTabBar::tab {
    background:         @unselected-tab-bg;
}

QTabBar::tab:selected, QTabBar::tab:hover {
    background:         @selected-tab-bg;
}

QStackedWidget {
    border-color:       @stacked-widget-border-color;
    background-color:   @stacked-widget-bg;
    padding:            @stacked-widget-padding;
}
</t>
<t tx="ekr.20140915194122.19471">QSplitter {
    border-color:       @splitter-border-fg;
    background-color:   @splitter-bg;
    border-style:       @splitter-border-style;
}

QSplitter::handle {
    /* Supports only background attributes. */
    background-color:   @splitter-handle-bg;
}

QSplitter::handle:hover {
    background-color:   @splitter-hover-bg;
}
</t>
<t tx="ekr.20140915194122.19473">/* Status areas. */

QLineEdit#status1, QLineEdit#status2 {
    background-color:   @status-bg;
    color:              @status-fg;
    border-color:       @status-border-color;
    border-width:       @status-border-width;
    border-style:       @status-border-style;
    font-family:        @status-font-family;
    font-size:          @status-font-size;
    font-weight:        @status-font-weight;
    font-style:         @status-font-style;
}

QLineEdit#status1[style_class ~= 'info'], QLineEdit#status2[style_class ~= 'info'] {
    background-color:   @find-found-bg;
    color:              @find-found-fg;
}

QLineEdit#status1[style_class ~= 'fail'], QLineEdit#status2[style_class ~= 'fail'] {
    background-color:   @find-not-found-bg;
    color:              @find-not-found-fg;
}
</t>
<t tx="ekr.20140915194122.19474">/* ========== Outline pane ========== */

QTreeWidget {
    /* Outline pane defaults. */
    border-style:               @focused-border-style;
    border-width:               @focused-border-width; 
    border-color:               @focused-border-unfocus-color; 
    color:                      @tree-fg;
    background-color:           @tree-bg;
    font-family:                @tree-font-family;
    font-size:                  @tree-font-size;
    font-weight:                @tree-font-weight;
    font-style:                 @tree-font-style;
    show-decoration-selected:   0; /* 1: select entire row */
}

QTreeWidget QLineEdit {
    /* Headlines when they *are* being edited. */
    color:                      @head-fg;
    background-color:           @head-bg;
    selection-color:            @head-sel-fg; 
    selection-background-color: @head-sel-bg;
    font-family:                @head-font-family;
    font-size:                  @head-font-size; 
    font-weight:                @head-font-weight;
    font-style:                 @head-font-style;
}

QTreeWidget:focus {
  border-style:         @focused-border-style;
  border-width:         @focused-border-width; 
  border-color:         @focused-border-focus-color; 
}

QTreeWidget::item:selected {
    /* Headlines when they selected but *not* edited. */
    color:              @edit-label-fg;
    background-color:   @edit-label-bg;
    font-family:        @edit-label-font-family;
    font-size:          @edit-label-font-size;
    font-weight:        @edit-label-font-weight;
    font-style:         @edit-label-font-style;
}

/* ===== 

QTreeView::branch:open{
    color:                      @tree-fg;
    background-color:           @tree-bg;
}

QTreeView::branch:closed{
    color:                      @tree-fg;
    background-color:           @tree-bg;
}

QTreeView::branch:closed:has-children{
    image: AT-tree-image-closed;
}

QTreeView::branch:open:has-children{
    image: At-tree-image-open;
}

===== */

</t>
<t tx="ekr.20140915194122.19475">/* Vim mode borders... */

QTextEdit#richTextEdit[vim_state~="vim_normal"] {
  border: @vim-mode-normal-border;
}

QTextEdit#richTextEdit[vim_state~="vim_insert"] {
  border: @vim-mode-insert-border;
}

QTextEdit#richTextEdit[vim_state~="vim_visual"] {
  border: @vim-mode-visual-border;
}
</t>
<t tx="ekr.20140915194122.21837">A small font size used by default in the status area.</t>
<t tx="ekr.20140915194122.23413">A small font size used by default in the check boxes in the Find tab.</t>
<t tx="ekr.20140915194122.23418"></t>
<t tx="ekr.20140915194122.23422"></t>
<t tx="ekr.20140915194122.23424"></t>
<t tx="ekr.20140915194122.23427"></t>
<t tx="ekr.20140915194122.23428"># All other fonts are defined in terms of these basic fonts.
# Changing the basic fonts are all that most users will want to do.</t>
<t tx="ekr.20140915194122.23429"></t>
<t tx="ekr.20140915194122.23430"></t>
<t tx="ekr.20140915194122.23431"></t>
<t tx="ekr.20140915194122.23432"></t>
<t tx="ekr.20140915194122.23433"></t>
<t tx="ekr.20140915194122.23435"></t>
<t tx="ekr.20140915194122.23436"></t>
<t tx="ekr.20140915194122.23437"></t>
<t tx="ekr.20140915194122.23439"></t>
<t tx="ekr.20140915194122.23440"></t>
<t tx="ekr.20140915194122.23441">Warning: These affect system dialogs.

Don't change these unless you are aware of the consequences</t>
<t tx="ekr.20140915194122.23442"># These control such things as margin width and style.
# The most important settings are the Focused border styles.</t>
<t tx="ekr.20140915194122.23443"></t>
<t tx="ekr.20140915194122.23444"></t>
<t tx="ekr.20140915194122.23445"></t>
<t tx="ekr.20140915194122.23446"></t>
<t tx="ekr.20140915194122.23447"></t>
<t tx="ekr.20140915194122.24238"># These are provided for compatibility with old settings.
</t>
<t tx="ekr.20140915194122.24250"></t>
<t tx="ekr.20140915194122.24251"></t>
<t tx="ekr.20140915194122.24252"></t>
<t tx="ekr.20140915194122.24253"></t>
<t tx="ekr.20140915194122.24258"></t>
<t tx="ekr.20140915194122.24259"></t>
<t tx="ekr.20140915194122.24260"></t>
<t tx="ekr.20140915194122.24261"></t>
<t tx="ekr.20140915194122.24262"></t>
<t tx="ekr.20140915194122.24263"></t>
<t tx="ekr.20140915194122.24264"></t>
<t tx="ekr.20140915194122.24265">Valid values are: normal,italic,oblique</t>
<t tx="ekr.20140915194122.24266"></t>
<t tx="ekr.20140915194122.24267"></t>
<t tx="ekr.20140915194122.24268"></t>
<t tx="ekr.20140916113003.19609"></t>
<t tx="ekr.20140916113003.20415"></t>
<t tx="ekr.20140917051508.19548">The children of this node determine how Leo looks.</t>
<t tx="ekr.20140917063815.21917"></t>
<t tx="ekr.20140918165611.38050">'''
Show a color wheel.
Writes the selected color to the clipboard.
'''
c.k.simulateCommand('show-color-wheel')
</t>
<t tx="ekr.20140922124047.19516"></t>
<t tx="ekr.20140922124047.19517"></t>
<t tx="ekr.20140922124047.20313"></t>
<t tx="ekr.20141010095448.19776"></t>
<t tx="ekr.20141010095448.19779"></t>
<t tx="ekr.20141024165714.1">True:  Scroll the find tab ensure find input field visible. (fixes bug 1254861)
False: Never scroll the find tab automatically.</t>
<t tx="ekr.20141112072219.1"></t>
<t tx="ekr.20141112072219.2"></t>
<t tx="ekr.20141204160426.5">New.</t>
<t tx="ekr.20150216135059.1">With @clean and @file, Leo can store persistent data in nodes. This
information consists of the node’s gnx (Global Node Index) and the node’s
uA, (User Attributes).

The gnx gives each node a unique, immutable identity. Gnx’s make clones
possible. The uA allows scripts and plugins to associate arbitrarily much
additional data with each node.

By default, Leo’s importers preserve neither gnx’s nor uA’s. This makes
imported @auto trees second class citizens. To remedy this, if an outline
contains an @persistence node, Leo will save data in the @persistence tree
that allows Leo to recover gnx’s and uA’s when re-reading @auto files
later. This allows clone links and uA’s to persist.

This is an optional feature. The stored data is akin to bookmarks. The data
can “break” (become inaccessible) if the structure (including
class/method/function names) changes.
</t>
<t tx="ekr.20150227102835.1">True: (Recommended) Make a "Recovered Nodes" node whenever Leo reads a file that has been changed outside of Leo.
</t>
<t tx="ekr.20150321090958.1">True: write check messages to Leo's log pane as well as the console.

Note: check-outline always writes error messages to both log and console.</t>
<t tx="ekr.20150322061147.1"></t>
<t tx="ekr.20150327002834.1">True: enable detailed traces inside vim.py.</t>
<t tx="ekr.20150403055250.1">True: check all @&lt;file&gt; nodes in the outline for changes in corresponding external files.

Warning: Checking many networked files can hang Leo. See:
https://github.com/leo-editor/leo-editor/issues/262
</t>
<t tx="ekr.20150420115709.1"></t>
<t tx="ekr.20150420115903.1"></t>
<t tx="ekr.20150420115928.1"></t>
<t tx="ekr.20150420115936.1"></t>
<t tx="ekr.20150420120009.1"></t>
<t tx="ekr.20150420120016.1"></t>
<t tx="ekr.20150420120025.1"></t>
<t tx="ekr.20150420120034.1"></t>
<t tx="ekr.20150420120051.1"></t>
<t tx="ekr.20150420120105.1"></t>
<t tx="ekr.20150420120114.1"></t>
<t tx="ekr.20150420120154.1"></t>
<t tx="ekr.20150420122804.1"></t>
<t tx="ekr.20150420122804.10"></t>
<t tx="ekr.20150420122804.11"></t>
<t tx="ekr.20150420122804.12"></t>
<t tx="ekr.20150420122804.2"></t>
<t tx="ekr.20150420122804.3"></t>
<t tx="ekr.20150420122804.4"></t>
<t tx="ekr.20150420122804.5"></t>
<t tx="ekr.20150420122804.6"></t>
<t tx="ekr.20150420122804.7"></t>
<t tx="ekr.20150420122804.8"></t>
<t tx="ekr.20150420122804.9"></t>
<t tx="ekr.20150426031409.1">Enables descendant settings depending on the HOSTNAME environmental variable.

Case is ignored in the value of the environment variable.

For example, let h = os.environ('HOSTNAME').lower()
        
@ifhostname bob
    Enables descendant settings if h == 'bob'

@ifhostname !bob
    Enables descendant settings if h != 'bob'
</t>
<t tx="ekr.20150426033400.1">Enables descendant settings depending on the value of an environment variable.

Valid form is:

    @ifenv name,comma-separated-values

Case is significant in the *name* of the environment variable.
Case is ignored in the *values*.

Examples:

@ifenv HOSTNAME,bob
    Enables descendant settings if os.environ('HOSTNAME') is 'Bob' or 'bob'
    
@ifenv EDITOR,leo,lion
    Enables descendant settings if os.environ('Editor') is 'Leo' or 'Lion'.
</t>
<t tx="ekr.20150428102831.1"># EKR 2013/09/25: revised docstring and improved get_user().
# EKR 2015/04/28: added insert() and do(). Split this node into pieces.

@language python

"""

**Important**: scripting abbreviations are in effect only if the following
setting is in effect::
    
    @bool enable-abbreviations = True
    
and one (or both) of the following are in effect::
    
    @bool scripting-at-script-nodes = True
    @bool scripting-abbreviations = True

This node defines the environment in which substitution scripts are
evaluated. For example, if this node contains `import time`, then an
abbreviation like::

    date;;={|{import time;x=time.asctime()}|}

can be written more simply as::

    date;;={|{x=time.asctime()}|}

The environment will contain the following pre-defined values:

- `c` and `g`, as usual.
- `values`: a dict. see ask() and get() below.
- `_abr`, the abbreviation being expanded.

"""

# helpful imports
import os
import sys
import time
import datetime

# globals
try:
    import pwd  # for full name of user in templates
except:
    pwd = None
try:
    _user_name = os.environ['LOGNAME']
    if pwd and _user_name:
        _user_name = pwd.getpwnam(_user_name).pw_gecos.rstrip(',')
except KeyError:
    _user_name = None
</t>
<t tx="ekr.20150428102831.10">def param_doc(k=None):
    """make an epydoc / rst style parameter documentation block"""
    if not k:
        k = "Params, comma sep."
        indent = '    '
    else:  # assume in an __init__ def'n
        indent = '        '
    if k in _values and _values[k]:
        return "\n\n%s:Parameters:\n%s" % (indent, '\n'.join(
            ["%s- `%s`: &lt;|describe %s|&gt;" % (
                indent, i.split('=',1)[0].strip(), i.split('=',1)[0].strip()
             ) for i in _values[k].split(',')]))
    return ""
</t>
<t tx="ekr.20150428102831.11">def long_word():
    """example of an abbreviation substitution which inspects
    the current content of the body text, see `;;;` example
    in @@data abbreviations-examples
    """
    words = c.p.b.split()
    tCurPosition = c.frame.body.widget.textCursor().position() 
    i = tCurPosition - len(_abr)
    b = c.p.b
    s = []
    while i and b[i].isalpha():
        s[0:0] = b[i]
        i -= 1
    s = ''.join(s)
    for i in words:
        if i.startswith(s) and i != s:
            return i[len(s):]
    return ''
</t>
<t tx="ekr.20150428102831.12">def close_xml():
    """simple, but usually right, code to close open XML tags"""
    tCurPosition = c.frame.body.widget.textCursor().position()    
    i = tCurPosition - len(_abr)
    b = c.p.b
    skips = 1
    while i and skips:
        s = []
        while i and b[i] != '&gt;':
            i -= 1
        i -= 1
        while i and (b[i] != '&lt;' or (s and b[i] == '&lt;' and s[0] == '/')):
            s[0:0] = b[i]
            i -= 1
            if s and s[0] == '&lt;' and len(s) &gt; 1 and s[1] == '/':
                skips += 1  # a closed tag indicates search one more tag
        skips -= 1
    s = ''.join([i if i.isalpha() else ' ' for i in s])
    if s.strip():
        return "&lt;/%s&gt;" % (s.split(None, 1)[0])
    else:
        return "&lt;/"
</t>
<t tx="ekr.20150428102831.13">def django_tag():
    """expand {block content} to 
       {% block content %}\n{% end_block content %} with proper
       indentation (for Django web templates)"""
    from leo.core.leoQt import QtCore
    widget = c.frame.body.widget
    scrollPosition = widget.getYScrollPosition()
    textCursor = widget.textCursor()
    tCurPosition = textCursor.position()  
    i = tCurPosition - len(_abr)
    b = c.p.b
    s = []
    while i and b[i] != '{':
        s[0:0] = b[i]
        i -= 1
    start = i
    s = ''.join(s)
    s_close = s.split()[0]
    indent = 0
    while i and b[i] != '\n':
        indent += 1
        i -= 1
    if indent:
        indent -= 1
    def later(c=c, indent=indent, b=b, s=s, _abr=_abr):
        offset = len("%s{%% %s %%}\n    %s" % (b[:start], s, ' '*indent))
        c.p.b = "%s{%% %s %%}\n    %s\n%s{%% end%s %%}%s" % (
            b[:start], s, ' '*indent, ' '*indent, s_close, b[start+len(s)+len(_abr):]
        )
        widget.setYScrollPosition(scrollPosition)
        textCursor.setPosition(offset)
        widget.setTextCursor(textCursor)
        c.bodyWantsFocusNow()
        
    QtCore.QTimer.singleShot(0, later)

</t>
<t tx="ekr.20150428102831.2">def do(commandName):
    '''Execute a command by name.'''
    c.k.simulateCommand(commandName,event=None)
</t>
<t tx="ekr.20150428102831.3">def insert(s):
    '''Insert the string s in the current widget.'''
    try:
        w = c.abbrevCommands.w
        if w:
            i = w.getInsertPoint()
            w.insert(i,s)
    except AttributeError:
        pass
</t>
<t tx="ekr.20150428102831.4">def ask(s, default="", prompt=None):
    """Ask, always, for a value for template field 's'"""
    x = g.app.gui.runAskOkCancelStringDialog(
        c,
        title = s,
        message = prompt or s,
        default = default,
    )
    _values[s] = x
    return x or ''
</t>
<t tx="ekr.20150428102831.5">def get(s, default='', prompt=''):
    """Ask for template field 's' only if not already known"""
    if s in _values:
        return _values[s]
    else:
        return ask(s, default=default, prompt=prompt) or ''
</t>
<t tx="ekr.20150428102831.7">def user_name():
    """get user's full name if available"""
    global _user_name
    if not _user_name:
        _user_name = ask('LOGNAME','LOGNAME')
    return _user_name
</t>
<t tx="ekr.20150428102831.8">def file_name():
    """dafault name of this file if implied by headline"""
    if c.p.h.endswith(".py"):
        return g.os_path_split(c.p.h)[-1]
    return ".py"
</t>
<t tx="ekr.20150428102831.9">def in_class():  # return "self, " if in a class definition
    """return "self" if in a class definition (from headline)"""
    for nd in c.p.self_and_parents_iter():
        if nd.h.startswith('class'):
            return "self, "
    return ""
</t>
<t tx="ekr.20150602160413.1">True: Automatically beautify all @&lt;file&gt; nodes when saving an outline.</t>
<t tx="ekr.20150618105435.1"></t>
<t tx="ekr.20150619190137.1">True: close the Find Dialog after any search.
False: leave the Find Dialog open after any search.</t>
<t tx="ekr.20150620100923.1">/* alternative active pane highlighting */

QTextEdit#log-widget,
QLineEdit#lineEdit,
QScrollArea#findScrollArea,
LeoQTreeWidget#treeWidget,
QTextEdit#richTextEdit {

    border-color: @focused-border-unfocus-color;
    border-style: @focused-border-style;
    border-width: @focused-border-width;
}

QTextEdit:focus#log-widget,
QLineEdit:focus#lineEdit,
QScrollArea:focus#findScrollArea,
LeoQTreeWidget:focus#treeWidget,
QTextEdit:focus#richTextEdit {

    border-color: @focused-border-focus-color;
}

QLineEdit#findPattern, QLineEdit#findChange {
  
    border-color: @focused-border-unfocus-color;
    border-style: @focused-border-style;
    border-width: @focused-border-width;
}

QLineEdit:focus#findPattern, QLineEdit:focus#findChange {

    border-color: @focused-border-focus-color;
    border-style: @focused-border-style;
    border-width: @focused-border-width;
}

QTextEdit:hover#log-widget, LeoQTreeWidget:hover#treeWidget,
QTextEdit:hover#richTextEdit {

}</t>
<t tx="ekr.20150620100951.1">The following is an example user style sheet containing alternate highlighting for active panes.

To enable:

- Copy to myLeoSettings.leo.
- Remove the @ignore.
- Specify the settings used in the stylesheet.</t>
<t tx="ekr.20150626060718.1"></t>
<t tx="ekr.20150626060718.2"></t>
<t tx="ekr.20150626060719.1"></t>
<t tx="ekr.20150626060837.1"></t>
<t tx="ekr.20150626061905.1"></t>
<t tx="ekr.20150629172742.1">True: Match each cloned node only once.
False: Match each cloned node for every cloned instance.</t>
<t tx="ekr.20150701052157.1"></t>
<t tx="ekr.20150701052212.2"></t>
<t tx="ekr.20150701052212.3"></t>
<t tx="ekr.20150701052212.4"></t>
<t tx="ekr.20150701052212.5"></t>
<t tx="ekr.20150701073123.1">/* ===== Optional line-number gutter ===== */

QFrame#gutter {
    background-color:           @gutter-bg;
    color:                      @gutter-fg;
    font-family:                @gutter-font-family;
    font-size:                  @gutter-font-size;
    font-weight:                @gutter-font-weight;
    font-style:                 @gutter-font-style;
}</t>
<t tx="ekr.20150701073241.1"></t>
<t tx="ekr.20150701073252.1"></t>
<t tx="ekr.20150701073308.1"></t>
<t tx="ekr.20150701074511.1"></t>
<t tx="ekr.20150701074521.1">The amount of extra width to give the gutter, in pixels</t>
<t tx="ekr.20150701074533.1">The y offset of the first line of the gutter, in pixels.
</t>
<t tx="ekr.20150701074844.1"></t>
<t tx="ekr.20150710065036.1">True: start-search (F3) automatically loads the Find Pattern.</t>
<t tx="ekr.20150710084507.1">True: raise a dialog warning about Python errors when writing files.</t>
<t tx="ekr.20150711073509.1"></t>
<t tx="ekr.20151225094956.1">&amp;unittest.leo</t>
<t tx="ekr.20151225142626.1"></t>
<t tx="ekr.20151225193848.1">leoP&amp;y.leo</t>
<t tx="ekr.20160112111247.1"># Lines to be inserted at the start of each stub file.

from typing import Any, Dict, Optional, Sequence, Tuple, Union

# At present, I don't understand how to tell mypy about ast.Node
# import ast
# Node = ast.Node

Node = Any
</t>
<t tx="ekr.20160127043440.1">For use by make-stub-files command.</t>
<t tx="ekr.20160127043520.1">AstFormatter.*: str
Pattern.all_matches: Sequence
Pattern.full_balanced_match: Optional[int]
Pattern.match_balanced: int
Pattern.match_entire_string: bool
StandAloneMakeStubFile.scan_types: Dict[str, str]
StubFormatter.do_.*: str
StubTraverser.format_returns: str
StubTraverser.match_return_patterns: Tuple[bool,str]
StubTraverser.match_return_pattern: Optional[str]
StubTraverser.match_balanced: int</t>
<t tx="ekr.20160127051243.1">The directory to which stub files are written.</t>
<t tx="ekr.20160127051552.1">True: allow stub files to be overwritten
</t>
<t tx="ekr.20160130145944.1"># Patterns to be applied to argument lists and return expressions.

aList: Sequence
controller: StandAloneMakeStubFile
fn: str
i[0-3]*: int
node: Node
parser: optparse.OptionParser
repr(*): str
s[0-3]*: str
str%(*): str
str%str: str
str.join(*): str
str.replace(*): str

# Leo patterns:

aList: Sequence
aList1: Sequence
aList2: Sequence
c: C
c1: C
c2: C
i: int
j: int
k: int
node: ast.Ast
p: P
p1: P
p2: P
s: str
s2: str
strict: bool
v: V
v1: V
v2: V</t>
<t tx="ekr.20160316111054.1"></t>
<t tx="ekr.20160316112407.2">True: allow stub files to be overwritten
</t>
<t tx="ekr.20160316112407.8">The directory to which stub files are written.</t>
<t tx="ekr.20160317062151.1"># Regular expression patterns.

.*__name__: str
</t>
<t tx="ekr.20160318061607.3"></t>
<t tx="ekr.20160318061607.4"></t>
<t tx="ekr.20160318061607.5"></t>
<t tx="ekr.20160318061607.6"></t>
<t tx="ekr.20160318061607.7"></t>
<t tx="ekr.20160428072005.1"># Lines starting with '#' are comment lines.
# A list of command names to be pre-loaded into the history list.
pylint
sort-lines
</t>
<t tx="ekr.20160504145653.1">True: plain keys in the outline pane search for headlines.
False: Ignore plain keys in the outline pane.
</t>
<t tx="ekr.20160514162747.1"></t>
<t tx="ekr.20160514162753.1"></t>
<t tx="ekr.20160514162820.1"></t>
<t tx="ekr.20160918113150.1"></t>
<t tx="ekr.20161003141448.1">@language javascript
</t>
<t tx="ekr.20161003141448.2">$(document).ready(function(){
    // Toggle (hide) all but top-level *nodes*.
    // Headlines are *always* visible.
    $("div.node").hide()
    $(".outlinepane").children("div.node").show();
    // Attach borders to *headlines*.
    $("div.headline").addClass('unborderclass')
    $(".outlinepane").children("div.node").children("div.headline:first").removeClass('unborderclass');
    $(".outlinepane").children("div.node").children("div.headline:first").addClass('borderclass');
    // Set h attributes for css
    // $("headline").attr("icon_url", "http://leoeditor.com/box" + $("headline").attr("icon") + ".GIF")
        // Works, but I haven't found how to use it.
    $("div.headline").click(function(e){
        e.stopImmediatePropagation()
            // Google: jquery click event called twice.
        // Toggle the expansion state.
        $(e.target).parent().children("div.node").toggle()
        // Set the body text.
        $(".body-code").text($(e.target).attr("b"));
        // Set the border
        $("div.headline").removeClass('borderclass');
        $("div.headline").addClass('unborderclass');
        $(e.target).removeClass('unborderclass');
        $(e.target).addClass('borderclass');
        // console.clear();
        // console.log($(e.target));
        // console.log($(e.target).children("div.node").length);
        // console.log($(e.target).children("div.node").children("div.headline").length);
        //console.log($(e.target).attr("b").length);
        //console.log($(e.target).children(":first"));
        //console.log($(e.target).children(":first").is(":visible"));
    });
});</t>
<t tx="ekr.20161003141513.1">@language css</t>
<t tx="ekr.20161003141513.2">/*
    The main .css stylesheet for the mod_http.py plugin.
    This stylesheet allocates fix-sized areas for the outline and body panes.
*/
h1 {
    /* font-size: 16pt; */
    /* color: red; */
}
.borderclass{
    border-color: #C1E0FF;
    border-width: 1px;
    border-style: solid;
}
.unborderclass{
    border-color: white;
    border-width: 1px;
    border-style: solid;
}
div.headline {
    color: blue;
    font-size: 16pt;
    font-style: normal;
    font-weight: normal;
    /* Prevent false clicks. */
    margin-top: 2px;
    margin-bottom: 2px;
    padding: 4px;
}
div.container {
    /* position:relative; */
    position: absolute;
}
div.node {
    position: relative;
    left: 20px;
}
div.outlinepane {
    
    background: #ffffec; /* Leo yellow */
    /* Fixed height/width creates scrollbars.*/
    resize: none;
    position: absolute:
    top: 10px;
    left: 10px;
    height: 300px;
    width: 1000px;
    /* height: 50%; */
    /* width: 100%; */
    overflow: scroll;
    line-height: 0.8;
}
div.bodypane {
    /* Fixed height/width creates scrollbars.*/
    position: absolute;
    resize: none;
    height: 500px;
    width: 1000px;
    left: 10px;
    top: 310px;
    bottom: 0px;
    /* height: 50%; */
    /* width: 100%; */
    overflow: scroll;
}
/* Indicator icons...

    Alas, the following does not work::

        node::before {
            content: url(attr(icon_url)) " " attr(expand) " ";
        }
*/
div.headline[icon="00"]::before {
    content: url("http://leoeditor.com/box00.GIF") " " attr(expand) " ";
}
div.headline[icon="01"]::before {
    content: url("http://leoeditor.com/box01.GIF") " " attr(expand) " ";
}
div.headline[icon="02"]::before {
    content: url("http://leoeditor.com/box02.GIF") " " attr(expand) " ";
}
div.headline[icon="03"]::before {
    content: url("http://leoeditor.com/box03.GIF") " " attr(expand) " ";
}
div.headline[icon="04"]::before {
    content: url("http://leoeditor.com/box04.GIF") " " attr(expand) " ";
}
div.headline[icon="05"]::before {
    content: url("http://leoeditor.com/box05.GIF") " " attr(expand) " ";
}
div.headline[icon="06"]::before {
    content: url("http://leoeditor.com/box06.GIF") " " attr(expand) " ";
}
div.headline[icon="07"]::before {
    content: url("http://leoeditor.com/box07.GIF") " " attr(expand) " ";
}
div.headline[icon="08"]::before {
    content: url("http://leoeditor.com/box08.GIF") " " attr(expand) " ";
}
div.headline[icon="09"]::before {
    content: url("http://leoeditor.com/box09.GIF") " " attr(expand) " ";
}
div.headline[icon="10"]::before {
    content: url("http://leoeditor.com/box10.GIF") " " attr(expand) " ";
}
div.headline[icon="11"]::before {
    content: url("http://leoeditor.com/box11.GIF") " " attr(expand) " ";
}
div.headline[icon="12"]::before {
    content: url("http://leoeditor.com/box12.GIF") " " attr(expand) " ";
}
div.headline[icon="13"]::before {
    content: url("http://leoeditor.com/box13.GIF") " " attr(expand) " ";
}
div.headline[icon="14"]::before {
    content: url("http://leoeditor.com/box14.GIF") " " attr(expand) " ";
}
div.headline[icon="15"]::before {
    content: url("http://leoeditor.com/box15.GIF") " " attr(expand) " ";
}
code {
    /* works */
    /* background: yellow; */
    font-family: "Monospace";
    font-size: 150%; /* 20pt; */
}</t>
<t tx="ekr.20161006072026.1"></t>
<t tx="ekr.20161006072041.1">Import &amp;Tabbed File...</t>
<t tx="ekr.20161006072143.1">Import &amp;FreeMind Files...</t>
<t tx="ekr.20161006093513.1">Import &amp;Zim Folder...</t>
<t tx="ekr.20161006093610.1">Import &amp;MindJet Files...</t>
<t tx="ekr.20161006102148.1">Import M&amp;ORE Files...</t>
<t tx="ekr.20161007090350.1">Import &amp;Jupyter Notebook...</t>
<t tx="ekr.20161007090445.1">Export &amp;Jupyter Notebook</t>
<t tx="ekr.20161010085256.1">True: The javascript importer cleans blank lines and regularizes indentaion.
</t>
<t tx="ekr.20161010172424.1">If &gt; 0, the importer rescans blocks only if they have more than the indicated number of lines.</t>
<t tx="ekr.20161010172441.1">If &gt; 0, the importer scans files only if they have more than the indicated number of lines.</t>
<t tx="ekr.20161011090731.1">True: (Experimental): The @auto write code expands section references.
False: (Legacy):      The @auto write code ignores section references.

@language rest
@wrap

**Note**: This setting has been retired for the following reasons:

1. The new javascript importer *always* generate section references for non-trivial programs. As a result, the legacy value for this setting would cause the javascript importer to fail.

2. The new @auto write code writes expands section references if they exist.  Otherwise, the write code writes the line as is, without any complaint. As a result, there should be no problem if an imported code contains something that looks like a section reference but isn't.
</t>
<t tx="ekr.20161011130632.1">/*
From Chris George:
https://groups.google.com/d/msg/leo-editor/ALxuMy-rmv8/rXsbe28KAgAJ
*/
ul {
    font-family: "Sans-serif";
    font-size: 100%;
    font-variant: small-caps;
}    

pre {
    margin: 25px;
    white-space: normal;
    color: black;
    font-family: "Monospace";
    font-size: 18px; /* 20pt; */
    white-space: normal;
    text-align: left;
    overflow: auto;
}

h1 {
    font-size: 16pt;
    color: red;
    font-variant: small-caps;
}
code {
    /* works */
    /* background: yellow; */
}

.borderclass{
    border-color: #C1E0FF;
    border-width: 1px;
    border-style: solid;
}
.unborderclass{
    border-color: white;
    border-width: 1px;
    border-style: solid;
}
div.headline {
    color: green;
    font-size: 14pt;
    font-style: normal;
    font-weight: normal;
}
div.container {
    position: relative;
}
div.node {
    position: relative;
    left: 20px;
}
div.outlinepane {
    background: #ffffec; /* Leo yellow */
    top: 10px;
    left: 10px;
    position: relative;
    
}
div.bodypane {
    position: relative;
    left: 10px;
    bottom: 0px;
    
}
/* =============== Added by EKR =============== */

/* Indicator icons...

    Alas, the following does not work::

        node::before {
            content: url(attr(icon_url)) " " attr(expand) " ";
        }
*/
div.headline[icon="00"]::before {
    content: url("http://leoeditor.com/box00.GIF") " " attr(expand) " ";
}
div.headline[icon="01"]::before {
    content: url("http://leoeditor.com/box01.GIF") " " attr(expand) " ";
}
div.headline[icon="02"]::before {
    content: url("http://leoeditor.com/box02.GIF") " " attr(expand) " ";
}
div.headline[icon="03"]::before {
    content: url("http://leoeditor.com/box03.GIF") " " attr(expand) " ";
}
div.headline[icon="04"]::before {
    content: url("http://leoeditor.com/box04.GIF") " " attr(expand) " ";
}
div.headline[icon="05"]::before {
    content: url("http://leoeditor.com/box05.GIF") " " attr(expand) " ";
}
div.headline[icon="06"]::before {
    content: url("http://leoeditor.com/box06.GIF") " " attr(expand) " ";
}
div.headline[icon="07"]::before {
    content: url("http://leoeditor.com/box07.GIF") " " attr(expand) " ";
}
div.headline[icon="08"]::before {
    content: url("http://leoeditor.com/box08.GIF") " " attr(expand) " ";
}
div.headline[icon="09"]::before {
    content: url("http://leoeditor.com/box09.GIF") " " attr(expand) " ";
}
div.headline[icon="10"]::before {
    content: url("http://leoeditor.com/box10.GIF") " " attr(expand) " ";
}
div.headline[icon="11"]::before {
    content: url("http://leoeditor.com/box11.GIF") " " attr(expand) " ";
}
div.headline[icon="12"]::before {
    content: url("http://leoeditor.com/box12.GIF") " " attr(expand) " ";
}
div.headline[icon="13"]::before {
    content: url("http://leoeditor.com/box13.GIF") " " attr(expand) " ";
}
div.headline[icon="14"]::before {
    content: url("http://leoeditor.com/box14.GIF") " " attr(expand) " ";
}
div.headline[icon="15"]::before {
    content: url("http://leoeditor.com/box15.GIF") " " attr(expand) " ";
}
code {
    /* works */
    /* background: yellow; */
    font-family: "Monospace";
    font-size: 150%; /* 20pt; */
}

</t>
<t tx="ekr.20161014152921.1"># You can define keyboard shortcuts here of the form:
#
#    some-command Shift-F5

# Now that we know what commands are single-line editing commands,
# Only &lt;return&gt; and arrow keys need per-pane bindings.

# These all cause problems on Ubuntu...

# do-nothing    = Ctrl-PageUp  # 20130210 - TNB - defined for tab-flipping,
# do-nothing    = Ctrl-PageDn  # working in Xfce at least

end-edit-headline           ! tree = Return # Escape is also possible.
# end-edit-headline           ! tree = Escape # May interfere with dismissing dialogs.
insert-newline              ! body = Return
insert-newline              ! text = Insert

back-char                   ! text = LtArrow
forward-char                ! text = RtArrow
next-line                   ! text = DnArrow
previous-line               ! text = UpArrow

back-char-extend-selection      ! text = Shift-LtArrow
forward-char-extend-selection   ! text = Shift-RtArrow
next-line-extend-selection      ! text = Shift-DnArrow
previous-line-extend-selection  ! text = Shift-UpArrow

contract-or-go-left         ! tree = LtArrow
expand-and-go-right         ! tree = RtArrow
goto-next-visible           ! tree = DnArrow
goto-prev-visible           ! tree = UpArrow
move-outline-down           ! tree = Meta-DnArrow
move-outline-left           ! tree = Meta-LtArrow
move-outline-right          ! tree = Meta-RtArrow
move-outline-up             ! tree = Meta-UpArrow

# These cause problems with editing headlines.
# goto-first-visible-node     ! tree= Home
# goto-last-visible-node      ! tree= End

contract-or-go-left         = None
expand-and-go-right         = None
goto-next-visible           = None
goto-prev-visible           = None
move-outline-down           = None
move-outline-left           = None
move-outline-right          = None
move-outline-up             = None

# do-nothing                  ! tree = Meta-DnArrow
# do-nothing                  ! tree = Meta-UpArrow
move-lines-up               ! body = Meta-UpArrow
move-lines-down             ! body = Meta-DnArrow 
  
goto-first-visible-node     = Alt-Home
# goto-last-visible-node    = Alt-End
goto-last-sibling           = Alt-End

back-page                       ! text = PageUp
back-page-extend-selection      ! text = Shift-PageUp
forward-page                    ! text = PageDn
forward-page-extend-selection   ! text = Shift-PageDn

scroll-down-half-page   ! tree = Shift-PageDn
scroll-down-page        ! tree = PageDn
scroll-up-half-page     ! tree = Shift-PageUp
scroll-up-page          ! tree = PageUp         

cycle-focus                         = None # Ctrl-tab: now tab-cycle-next
# cycle-all-focus                   = Ctrl-Shift-tab

back-word                            ! text = Alt-LtArrow
back-word-extend-selection           ! text = Alt-Shift-LtArrow
beginning-of-buffer                  ! text = Ctrl-UpArrow
beginning-of-buffer-extend-selection        = Ctrl-Shift-UpArrow
end-of-buffer                               = Ctrl-DnArrow
end-of-buffer-extend-selection              = Ctrl-Shift-DnArrow

beginning-of-line                   = Ctrl-LtArrow
back-to-home                        = Home
beginning-of-line-extend-selection  = Ctrl-Shift-LtArrow
end-of-line                         = Ctrl-RtArrow
end-of-line-extend-selection        = Ctrl-Shift-RtArrow

###

forward-paragraph                   = Meta-Ctrl-DnArrow
forward-paragraph-extend-selection  = Meta-Ctrl-Shift-DnArrow
forward-sentence                    = Meta-Ctrl-LtArrow
forward-sentence-extend-selection   = Meta-Ctrl-Shift-LtArrow
forward-word                        = Alt-RtArrow
forward-word-extend-selection       = Alt-Shift-RtArrow
goto-global-line                    = Ctrl-j
match-brackets                      = Ctrl-b
move-past-close                     = None
move-past-close-extend-selection    = None
select-all                          = Ctrl-a

###

close-window                = Ctrl-w
#exit-leo                    = Ctrl-q
#new                         = Ctrl-n
#open-outline                = Ctrl-o
#save-file                   = Ctrl-s
write-at-file-nodes         = None
write-dirty-at-file-nodes   = None

###

# Quick finds
backward-find-character                     = None
backward-find-character-extend-selection    = None
find-character                              = None
find-character-extend-selection             = None

# To start finds and changes...
# start-search                        = Ctrl-f
set-replace-string                  = Ctrl-Alt-e
#find-tab-hide                       = None
#find-tab-open                       = None

#clone-find-all                      = None
isearch-backward                    = None
isearch-backward-regexp             = None
isearch-forward                     = None
#isearch-forward-regexp              = None
# query-replace                       = None
# query-replace-regex                 = None
search-backward                     = None
search-forward                      = None
#word-search-backward                = None 
#word-search-forward                 = None

# To coninue finds and changes...
find-next                           = Ctrl-g
find-all                            = None
find-prev                           = Ctrl-Shift-g
replace                              = Ctrl-=
replace-all                         = None  # Not recommended to bind this to a shortcut.
replace-then-find                   = Ctrl-Alt-j

set-find-everywhere                 = None
set-find-node-only                  = None
set-find-suboutline-only            = None
toggle-find-ignore-case-option      = None
toggle-find-in-body-option          = None
toggle-find-in-headline-option      = None
toggle-find-mark-changes-option     = None
toggle-find-mark-finds-option       = None
toggle-find-regex-option            = None
toggle-find-word-option             = None
toggle-find-wrap-around-option      = None

###

contract-pane       = None
expand-pane         = None
focus-to-body       = Meta-d
focus-to-tree       = Meta-t
toggle-active-pane  = Ctrl-t
keyboard-quit       = Meta-g

tab-cycle-previous  = Ctrl-Prior
tab-cycle-next      = Ctrl-Next
# tab-cycle-next      = Ctrl-Tab

# keyboard-quit     = Escape # Hard to type, interferes with dismissing dialogs.
# Possible alternatives.
# focus-to-tree     = Ctrl-T

###

start-ipython           = None
push-to-ipython         = None

###

# menu-shortcut = Alt-C # Cmds menu.
# menu-shortcut = Alt-E # Edit menu.
# menu-shortcut = Alt-F # File menu.
# menu-shortcut = Alt-H # Help menu.
# menu-shortcut = Alt-O # Outline menu.
# menu-shortcut = Alt-P # Plugins menu.
# menu-shortcut = Alt-S # Search and Settings menus.
# menu-shortcut = Alt-W # Window menu.

###
do-nothing              = Meta-o
full-command            = Meta-Shift-x
# negative-argument     = None      # Alt-minus conflicts with contract-all.
repeat-complex-command  = None # Ctrl-P
# universal-argument    = Meta-u     # Usually Ctrl-u, conflicts with move-outline-up.

###

auto-complete-force         = Meta-space
auto-complete               = period
debug                       = None
execute-script              = Meta-B
redo                        = Shift-Ctrl-Z

dabbrev-completion  = Meta-Ctrl-slash
dabbrev-expands     = Meta-slash

run-all-unit-tests-externally       = None
run-all-unit-tests-locally          = None
run-marked-unit-tests-externally    = None
run-marked-unit-tests-locally       = None
run-selected-unit-tests-externally  = None
run-selected-unit-tests-locally     = None

show-calltips               = parenleft
show-calltips-force         = None # This command needs work before it is useful. Alt-parenleft
sort-siblings               = Meta-Shift-A
toggle-autocompleter        = Meta-1
toggle-calltips             = Meta-2
toggle-extend-mode          = Meta-3
undo                        = Ctrl-Z

###

clone-node                  = Meta-'
chapter-select              = None
contract-node               = None
copy-node                   = Shift-Ctrl-c
cut-node                    = Shift-Ctrl-x
contract-all                = Alt-Meta--
edit-headline               = Meta-h
delete-node                 !tree = Delete
delete-node                 !tree = BackSpace
#demote                      = Ctrl-}
#demote                      = Ctrl-]
demote                      = None
# demote                      = Tab
expand-next-level           = None
expand-node                 = Meta-]
extract                     = Shift-Ctrl-D
extract-names               = Shift-Ctrl-N
# extract-python-method       = None
# extract-section             = Shift-Ctrl-S
goto-next-clone             = Alt-N
insert-child                = Meta-Insert
insert-node                 = Meta-I
insert-node                 !tree = Insert
insert-node                 = Shift-Insert
mark                        = Meta-M
move-outline-down           = Ctrl-D
move-outline-left           = Ctrl-L
move-outline-right          = Ctrl-R
move-outline-up             = Ctrl-U
paste-node                  = Shift-Ctrl-V
# promote                     = Ctrl-{
# promote                     = Ctrl-[
promote                     = None
# promote                     = Shift-Tab

###

add-comments                        = Ctrl-#
backward-delete-char                !text = BackSpace
backward-delete-char                = Shift-BackSpace
backward-delete-word                = Ctrl-BackSpace
backward-kill-word                  = Alt-BackSpace
copy-text                           = Ctrl-c        # Conflicts with Emacs ctrl-c
cut-text                            = Ctrl-x
delete-char                         = Shift-Delete
delete-char                         !text = Delete
delete-comments                     = None # Ctrl-Shift-#
# delete-comments                   = Shift-Ctrl-0 # Set elsewhere.
delete-word                         = Ctrl-Delete
delete-spaces                       = None
kill-line                           = Meta-k
kill-to-end-of-line                 = None

newline-and-indent                  = None # Ctrl-j # same as tab.
# newline-and-indent                  = Tab
indent-region                       = None
#indent-region                       = Tab
indent-rigidly                      = Tab

paste-text                          = Ctrl-v
reformat-paragraph                  = Shift-Meta-p
split-line                          = None
unformat-paragraph                  = Shift-Meta-u
unindent-region                     = Shift-tab
yank                                = Meta-Y
yank-pop                            = None # Alt-Y
zap-to-character                    = None # Alt-z

## KW added
hoist                               = Ctrl-Shift-h
de-hoist                            = Ctrl-Alt-Shift-h
</t>
<t tx="ekr.20161014152934.1">https://groups.google.com/d/msg/leo-editor/uUZQaO9HYQQ/b9gocdokAgAJ

The OSX shortcuts posted by karstenw at the link below solved all of my keycode problems on a Mac:

https://github.com/karstenw/leo-shortcuts-osx/blob/master/myLeoSettings.leo</t>
<t tx="ekr.20161021095001.1">True: run Pyflakes on each saved files, but only if it has been changed.</t>
<t tx="ekr.20161025090757.1">Leo&amp;Dist.leo</t>
<t tx="ekr.20161121044950.1"># The headline must be: @outline-data tree-abbreviations

# A list tree abbreviation names.

# For each abbreviation name, there should be corresponding child node,
# the **abbreviation node** whose headline matches the abbreviation name.

# When a tree abbreviation fires, Leo pastes all the descendants of
# the abbreviation node as the last children of the presently selected node.

importer;;
per-commander-plugin;;
demo;;
</t>
<t tx="ekr.20161121044950.10">def __init__ (self,c):
    
    self.c = c
    # Warning: hook handlers must use keywords.get('c'), NOT self.c.
    &lt;|ivars|&gt;</t>
<t tx="ekr.20161121044950.2"></t>
<t tx="ekr.20161121044950.3">&lt;&lt; docstring &gt;&gt;
### From leoSettings.leo
# Created 2017/05/30
@language python
@tabwidth -4
__version__ = '0.0'
&lt;&lt; version history &gt;&gt;
&lt;&lt; imports &gt;&gt;
@others</t>
<t tx="ekr.20161121044950.4">'''
&lt;|docstring|&gt;
'''
</t>
<t tx="ekr.20161121044950.5">@
Put notes about each version here.
&lt;|Initial version notes|&gt;</t>
<t tx="ekr.20161121044950.6">import leo.core.leoGlobals as g

&lt;|imports|&gt;</t>
<t tx="ekr.20161121044950.7">def init ():
        
    ok = g.app.gui.guiName() in ('qt','qttabs')
    if ok:
        if 1: # Create the commander class *before* the frame is created.
            g.registerHandler('before-create-leo-frame',onCreate)
        else: # Create the commander class *after* the frame is created.
            g.registerHandler('after-create-leo-frame',onCreate)
        g.plugin_signon(__name__)   
    return ok
</t>
<t tx="ekr.20161121044950.8">def onCreate (tag, keys):
    
    c = keys.get('c')
    if c:
        thePluginController = pluginController(c)
</t>
<t tx="ekr.20161121044950.9">class &lt;|Controller Class Name|&gt;:
    
    @others</t>
<t tx="ekr.20161121172936.1">def get_language():
    '''Get a language name, and set name and cap_name in the namespace.'''
    x = g.app.gui.runAskOkCancelStringDialog(
        c,
        title = 'Language',
        message = 'Enter language name. Case does not matter.',
    )
    # g.trace('===== x:', repr(x))
    if not x: x = 'no-language!'
    _values = c.abbrev_subst_env['name'] = x.lower()
    _values = c.abbrev_subst_env['cap_name'] = x.capitalize()
    return x.lower()
</t>
<t tx="ekr.20170123145248.1"></t>
<t tx="ekr.20170202104705.1">False (legacy): color all @ and @doc parts with a uniform color.
True: call all @ and @doc parts as reStructuredText (@language rest).</t>
<t tx="ekr.20170208063901.1">'''
A template for demonstrations based on plugins/demo.py.
The demo;; abbreviation will create this tree.
'''
&lt;&lt; imports &gt;&gt;
@others
# Use the *same* command/key binding for demo-start and demo.next.
try:
    if getattr(g.app, 'demo', None):
        g.app.demo.next()
    else:
        g.cls()
        print('starting demo')
        demo = MyDemo(c, trace=False)
        demo.bind('callout', callout)
        demo.bind('title', title)
        demo.start(script_string=script_string)
except Exception:
    g.app.demo = None
    raise
</t>
<t tx="ekr.20170208063901.2">if c.isChanged(): c.save()
import imp
from leo.core.leoQt import QtGui
import leo.plugins.demo as demo_module
imp.reload(demo_module)</t>
<t tx="ekr.20170208063901.3"># A short example. Change as needed.
script_string = '''\
callout('Callout 1 centered')
title('This is title 1')
###
callout('Callout 2 (700, 200)', position=[700, 200])
title('This is title 2')
demo.next()
'''
</t>
<t tx="ekr.20170208063901.4">class MyDemo (demo_module.Demo):
    
    def setup_script(self):
        '''Delete all previously shown widgets.'''
        self.delete_widgets()</t>
<t tx="ekr.20170208063901.5">def callout(text, **keys):
    w = demo_module.Callout(text, **keys)
    
def title(text, **keys):
    w = demo_module.Title(text, **keys)
</t>
<t tx="ekr.20170208063946.1"></t>
<t tx="ekr.20170307055039.1">To see these colors: http://ethanschoonover.com/solarized

For both light and dark
=======================

blue      #268bd2
cyan      #2aa198 
green     #859900
magenta   #d33682
orange    #cb4b16
red       #dc322f
violet    #6c71c4
yellow    #b58900


blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82
cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63
green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60
magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83
orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80
red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86
violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77
yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71


base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21
base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26
base01    #586e75 10/7 brgreen  240 #585858 45 -07 -07  88 110 117 194  25  46
base00    #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195  23  51
base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59
base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63
base2     #eee8d5  7/7 white    254 #e4e4e4 92 -00  10 238 232 213  44  11  93
base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99

Dark
====

    base1 optional emphasized content (keywords)
  * base0 default (body text)
    
    base01 comments
    base02 background highlights (selected background)
  * base03 background
    
Light
=====

    base01 optional emphasized content (keywords)
  * base00 default (body text)
    base1 comments
    base2 background highlights (selected background)
  * base3 background
</t>
<t tx="ekr.20170316105542.1"></t>
<t tx="ekr.20170323095724.1">leo&amp;Settings.leo</t>
<t tx="ekr.20170323095822.1">&amp;myLeoSettings.leo
</t>
<t tx="ekr.20170509103101.1"></t>
<t tx="ekr.20170509103221.1"></t>
<t tx="ekr.20170509103811.1"></t>
<t tx="ekr.20170509103823.1"></t>
<t tx="ekr.20170509103833.1"></t>
<t tx="ekr.20170509103834.1"></t>
<t tx="ekr.20170509103931.1"></t>
<t tx="ekr.20170509103944.1"></t>
<t tx="ekr.20170509104039.1"></t>
<t tx="ekr.20170509104039.2"></t>
<t tx="ekr.20170509104039.3"></t>
<t tx="ekr.20170509104039.4"></t>
<t tx="ekr.20170509104039.5"></t>
<t tx="ekr.20170509104039.6"></t>
<t tx="ekr.20170509104039.7"></t>
<t tx="ekr.20170509104140.2"></t>
<t tx="ekr.20170509104140.3"></t>
<t tx="ekr.20170509104140.4"></t>
<t tx="ekr.20170509104140.5"></t>
<t tx="ekr.20170509104140.6"></t>
<t tx="ekr.20170509104140.7"></t>
<t tx="ekr.20170509104817.1"></t>
<t tx="ekr.20170509104949.1"></t>
<t tx="ekr.20170530035032.1"></t>
<t tx="ekr.20170530035032.2">'''
The @auto importer for the {|{x=get_language()}|} language.

Created {|{x=time.strftime("%Y/%m/%d")}|} by the `importer;;` abbreviation.
'''
import leo.plugins.importers.linescanner as linescanner
Importer = linescanner.Importer
@others
importer_dict = {
    'class': {|{x=cap_name}|}_Importer,
    'extensions': [&lt;|comma-separated lists of extensions|&gt;],
        # Example: ['.c', '.cc', '.c++', '.cpp', '.cxx', '.h', '.h++']
}
@language python
@tabwidth -4


</t>
<t tx="ekr.20170530035032.3">class {|{x=cap_name}|}_Importer(Importer):
    '''The importer for the {|{x=name}|} lanuage.'''

    def __init__(self, importCommands):
        '''{|{x=cap_name}|}_Importer.__init__'''
        # Init the base class.
        Importer.__init__(self,
            importCommands,
            language = '{|{x=name}|}',
            state_class = {|{x=cap_name}|}_ScanState,
            strict = &lt;|True leading whitespace is significant. Otherwise False|&gt;,
        )
        
    @others
</t>
<t tx="ekr.20170530035032.4"># These can be overridden in subclasses.
</t>
<t tx="ekr.20170530035032.5">### Define an override if desired...

if 0: # The base class
    def clean_headline(self, s):
        '''Return a cleaned up headline s.'''
        return s.strip()
        
# A more complex example, for the C language.

# def clean_headline(self, s):
    # '''Return a cleaned up headline s.'''
    # import re
    # type1 = r'(static|extern)*'
    # type2 = r'(void|int|float|double|char)*'
    # class_pattern = r'\s*(%s)\s*class\s+(\w+)' % (type1)
    # pattern = r'\s*(%s)\s*(%s)\s*(\w+)' % (type1, type2)
    # m = re.match(class_pattern, s)
    # if m:
        # prefix1 = '%s ' % (m.group(1)) if m.group(1) else ''
        # return '%sclass %s' % (prefix1, m.group(2))
    # m = re.match(pattern, s)
    # if m:
        # prefix1 = '%s ' % (m.group(1)) if m.group(1) else ''
        # prefix2 = '%s ' % (m.group(2)) if m.group(2) else ''
        # h = m.group(3) or '&lt;no c function name&gt;'
        # return '%s%s%s' % (prefix1, prefix2, h)
    # else:
        # return s
</t>
<t tx="ekr.20170530035032.6">def clean_nodes(self, parent):
    '''
    Clean all nodes in parent's tree.
    Subclasses override this as desired.
    See perl_i.clean_nodes for an examplle.
    '''
    pass
</t>
<t tx="ekr.20170530035032.7">class {|{x=cap_name}|}_ScanState:
    '''A class representing the state of the {|{x=name}|} line-oriented scan.'''
    
    def __init__(self, d=None):
        '''{|{x=cap_name}|}_ScanState.__init__'''
        if d:
            prev = d.get('prev')
            self.context = prev.context
            ### Adjust these by hand.
            self.curlies = prev.curlies
        else:
            self.context = ''
            ### Adjust these by hand.
            self.curlies = 0

    def __repr__(self):
        '''{|{x=cap_name}|}_ScanState.__repr__'''
        ### Adjust these by hand.
        return "{|{x=cap_name}|}_ScanState context: %r curlies: %s" % (
            self.context, self.curlies)

    __str__ = __repr__

    @others

</t>
<t tx="ekr.20170530035032.8">def level(self):
    '''{|{x=cap_name}|}_ScanState.level.'''
    return &lt;|self.curlies|&gt;
        ### Examples:
        # self.indent # for python, coffeescript.
        # self.curlies
        # (self, curlies, self.parens)
</t>
<t tx="ekr.20170530035032.9">def update(self, data):
    '''
    {|{x=cap_name}|}_ScanState.update

    Update the state using the 6-tuple returned by v2_scan_line.
    Return i = data[1]
    '''
    context, i, delta_c, delta_p, delta_s, bs_nl = data
    # All ScanState classes must have a context ivar.
    self.context = context
    self.curlies += delta_c  
    ### Update {|{x=cap_name}|}_ScanState ivars
    # self.bs_nl = bs_nl
    # self.parens += delta_p
    # self.squares += delta_s
    return i
</t>
<t tx="ekr.20170617135317.1">True: The python importer will copy the first decorator preceding a
      function/method into the headline of the imported node.
      
**Note**: The importer will copy only the first line of a multiline decorator.</t>
<t tx="ekr.20170706103545.1">True: Report unchanged written files.</t>
<t tx="ekr.20170706103843.1"></t>
<t tx="ekr.20170718054928.1"></t>
<t tx="ekr.20170718054951.1"></t>
<t tx="ekr.20170819113555.1"></t>
<t tx="ekr.20170819113555.2"># +</t>
<t tx="ekr.20170819113555.3"># -</t>
<t tx="ekr.20170819113555.4"># +++</t>
<t tx="ekr.20170819113555.5"># ---</t>
<t tx="ekr.20170819170521.1"># @@</t>
<t tx="ekr.20170823083657.1">Leo creates its menus using @menus trees. Within @menus trees,
@menu nodes create menus and @item nodes create menu items.

Notes:

- The menu name always follows @menu. If the menu name is 'Plugins', Leo will create the Plugins menu and populate the menu by calling the 'create-optional-menus' hook. This creates the Plugins menu as usual.

- The first non-blank, non-comment line of the body of an @menu item is an an alternate name for the menu.  This allows translations of menus.

- Nested @menu nodes contain submenus.

- The command name follows @item. If the body text of an @item node exists, the first non-blank, non-comment line of the body text is the menu name. Otherwise, the menu name is the command name. However, if the command name starts with a '*', hyphens are removed from the menu name.

- Menu names and command names may contain a single ampersand (&amp;). If present, the following character is underlined in the name.

- If the command name in an @item node is just a hyphen (-), the item represents a menu separator.
</t>
<t tx="ekr.20170825083426.1"># typedef names, one per line

# These fix #545:

    # _Bool
    # scr_enter_status_t
    # scr_exec_status_t
    # scr_exit_status_t
    # scr_node_api_t
    # scr_update_status_t
    # uint16_t
    # uint8_t
</t>
<t tx="ekr.20171121100639.1"></t>
<t tx="ekr.20171122044417.1"># RULE :([\w_@]+:)+\s*$
# REPLACE-HEAD
</t>
<t tx="ekr.20171122044441.1"># if the node name starts with 'peacock node DEMO', make a mess of it
RULE ^(peacock node DEMO)
REPLACE LOOK: \1
ICON Tango/16x16/emotes/face-grin.png
ICON Tango/16x16/emotes/face-wink.png
FG @solarized-magenta
BG white
FONT Times
PX 40
ITALIC 1
WEIGHT Bold
</t>
<t tx="ekr.20171122044441.2"># remove @clean etc. and use an icon
RULE ^@clean (.*)
REPLACE \1
ICON file_icons/file_clean.png

RULE ^@auto (.*)
REPLACE \1
ICON file_icons/file_auto.png

RULE ^@edit (.*)
REPLACE \1
ICON file_icons/file_edit.png

RULE ^@asis (.*)
REPLACE \1
ICON file_icons/file_asis.png

RULE ^@nosent (.*)
REPLACE \1
ICON file_icons/file_nosent.png

RULE ^@file (.*)
REPLACE \1
ICON file_icons/file_file.png
</t>
<t tx="ekr.20171122044441.3"># Add Icon to folders and remove /-/
RULE ^/(.*)/$
REPLACE \1 
ICON file_icons/folder.png

# Add icon to path folders and remove @path
RULE ^@path (.*)
REPLACE \1 
ICON file_icons/folder_path.png

# Add Icon to removed folders and remove */-/*
RULE ^\*/(.*)/\*$
REPLACE \1 
ICON file_icons/folder_removed.png

# Add Icon to removed files and remove *-* but not **-**
RULE ^\*([^\*/]*[^\*]*[^\*/]*)\*$
REPLACE \1 
ICON file_icons/removed.png
</t>
<t tx="ekr.20171122044906.1"># show the last part of long filenames
RULE ^.{1,1000}/(.{20})
REPLACE …/\1
</t>
<t tx="ekr.20171122113628.1"># **Decluttering** replaces controls custom formatting of headlines, including:

# - Hiding or changing headline text,
# - Adding icons to headlines,
# - Changing the styling of headlines.

# Decluttering is *inactive* when you are editing a headline.

# Decluttering is *completely optional*. To enable decluttering, use::

     # @bool tree-declutter = True
     
# Decluttering is controlled by **decluttering rulesets**.
# You specify decluttering rulesets in the body text of::
     
    # @data tree-declutter-patterns
    
# As usual with @data nodes:

# - Blank lines and lines starting with '#' are ignored.
# - You may organize the text of the @data node using child nodes.

# Each ruleset consists of a list of lines:

# - The first line is a **rule line**, containing a **find pattern**.
# - The second line is a **replacement line**.
# - The ruleset ends with zero or more **style lines**.

# Find patterns are `regular expressions &lt;https://docs.python.org/2/library/re.html&gt;`_.
# Decluttering affects only those headlines that match a rule pattern. 

# The following section shows some example rulesets. Later sections discuss decluttering commands, patterns and styles in more detail.
</t>
<t tx="ekr.20171122113628.3"># All rulesets start with a **rule line** of the form::

    # RULE &lt;regular expression&gt;
    
# The ruleset matches a headline if and only if the regular expression matches. Matches can start anywhere in the headline. Leo first attempts to a match using re.match. If that doesn't work, Leo tries re.search.

# A **replacement line** must follow the rule line. Here are the valid forms::

    # REPLACE &lt;substitution expression&gt;
    # REPLACE-HEAD
    # REPLACE-TAIL
    # REPLACE-REST
    
# - REPLACE replaces the headline by the value of the substitution expression.  For example::

    # REPLACE \1
    
  # matches replaces the headline by the first matched regex group.

# - REPLACE-HEAD replaces replace the headline by the text that precedes the matched text.

# - REPLACE-TAIL replaces the headline by the text that follows the matched text.

# - REPLACE-REST replaces the headline by everything except the matched text.
</t>
<t tx="ekr.20171122113628.4"># Leo applies style lines only if they appear in a ruleset that matches a headline.
# Style lines do the following...

# Add an icon to the headline::

    # ICON path/to/icon
    
# Set the background or foreground color to a color number or names::

    # BG #FF8800
    # FG @solarized-magenta

# Set the font to a given font name::

    # Font Times
    
# Set the font size in pixels (PX) or points (PT)::

    # PX 40
    # PT 16
    
# Enable or disable italics::

    # ITALIC 0
    # ITALIC 1

# Set the font weight to one of Light, Normal, DemiBold, Bold, Black::

    # WEIGHT DemoBold
</t>
<t tx="ekr.20171206102715.1">Settings for MacOs or Linux...</t>
<t tx="ekr.20171206102715.2">ext: .py
kind: subprocess.Popen
arg: /usr/bin/scite
</t>
<t tx="ekr.20171206102759.1">Settings for Windows...
</t>
<t tx="ekr.20171206102759.2">ext:    .py
kind:   os.startfile
arg:    idle

# Does not work
    # ext:    .py
    # kind:   subprocess.Popen
    # arg:    pythonw
    # arg:    "%PYTHONHOME%/Lib/idlelib/idle.pyw"

</t>
<t tx="ekr.20171206102759.3">ext:    .txt
arg:    "%ProgramFiles%\OpenOffice 4\program\swriter.exe"
kind:   subprocess.Popen
</t>
<t tx="ekr.20171206102759.4">ext:    .txt
kind:   subprocess.Popen
arg:    C:\apps\SciTE\scite.exe
</t>
<t tx="ekr.20171206102759.6">ext:    
kind:   subprocess.Popen
arg:    "%ProgramFiles%/Windows NT/Accessories/wordpad.exe"
</t>
<t tx="ekr.20171229135829.1"></t>
<t tx="ekr.20171229135843.1"></t>
<t tx="ekr.20180117074230.1"># True: Show user tips on startup.</t>
<t tx="ekr.20180124050114.1">For each @button node, Leo adds right-click menu items for:

- @rclick nodes directly *following* the @button.

- @rclick nodes that are *children* of the @button node, provided that the
  @button node has no ``@others`` directive.

**Standard rclick items**: Leo adds two standard right-click menu items for
each @button node: ``Remove Button`` and ``Goto Script``. Leo adds the
indicator text **only** to buttons that contain right-click menu items in
addition to these two standard right-click menu items.

The headline of the @rclick node gives the menu title. The body contains a
Leo script to execute when the user selects the menu item.

**Related Setting**:

@string mod_scripting_subtext = ▼

This setting specifies **indicator text** that indicates that an @button button has right-click menu items created by @rclick nodes.

Unicode chars like ▼ ▾ and … are typical choices for this text.
</t>
<t tx="ekr.20180301060510.1">The maximum number of lines to show in @data nodes.

0 causes all lines to be shown.
</t>
<t tx="ekr.20180306144001.1">These are definitions of colors not defined by default, so you can refer to "solarized-red" as "@solarized-red" instead of "#dc322f".

**Please do not change these definitions**.

Feel free to *add* to them.
</t>
<t tx="ekr.20180306155628.1"></t>
<t tx="ekr.20180307005648.1">Devs *must not* change these definitions, even within a specific theme!

Use different names instead.</t>
<t tx="ekr.20180307005648.10"></t>
<t tx="ekr.20180307005648.11"></t>
<t tx="ekr.20180307005648.12"></t>
<t tx="ekr.20180307005648.13"></t>
<t tx="ekr.20180307005648.14"></t>
<t tx="ekr.20180307005648.15"></t>
<t tx="ekr.20180307005648.16"></t>
<t tx="ekr.20180307005648.17"></t>
<t tx="ekr.20180307005648.18"></t>
<t tx="ekr.20180307005648.3"></t>
<t tx="ekr.20180307005648.4"></t>
<t tx="ekr.20180307005648.5"></t>
<t tx="ekr.20180307005648.6"></t>
<t tx="ekr.20180307005648.7"></t>
<t tx="ekr.20180307005648.8"></t>
<t tx="ekr.20180307005648.9"></t>
<t tx="ekr.20180307030430.1"># Not an official solarized color: same as solorarized-base3</t>
<t tx="ekr.20180307030442.1"># Not an official solarized color.  Same as dark-base-03</t>
<t tx="ekr.20180308050150.1">These defaults settings ensure that legacy themes continue to work as before.

May be overridden by themes.</t>
<t tx="ekr.20180308050150.10"></t>
<t tx="ekr.20180308050150.11"></t>
<t tx="ekr.20180308050150.13"></t>
<t tx="ekr.20180308050150.14"></t>
<t tx="ekr.20180308050150.15"></t>
<t tx="ekr.20180308050150.2"></t>
<t tx="ekr.20180308050150.3"></t>
<t tx="ekr.20180308050150.4"></t>
<t tx="ekr.20180308050150.5"></t>
<t tx="ekr.20180308050150.6"></t>
<t tx="ekr.20180308050150.7"></t>
<t tx="ekr.20180308050150.8"></t>
<t tx="ekr.20180308050150.9"></t>
<t tx="ekr.20180317172528.1"></t>
<t tx="ekr.20180317175351.1"></t>
<t tx="ekr.20180320113441.1">Open A &amp;Theme File</t>
<t tx="ekr.20180403100653.1"></t>
<t tx="ekr.20180403100719.1"></t>
<t tx="ekr.20180403100800.1"></t>
<t tx="ekr.20180403100839.1"></t>
<t tx="ekr.20180403100900.1"></t>
<t tx="ekr.20180403100919.1"></t>
<t tx="ekr.20180403100935.1"></t>
<t tx="ekr.20180403104558.1"></t>
<t tx="ekr.20180403104616.1"></t>
<t tx="ekr.20180403104643.1"></t>
<t tx="ekr.20180403104732.1"></t>
<t tx="ekr.20180403104751.1"></t>
<t tx="ekr.20180403105112.1"></t>
<t tx="ekr.20180403105526.1"></t>
<t tx="ekr.20180403105541.1"></t>
<t tx="ekr.20180403105609.1"></t>
<t tx="ekr.20180403105636.1"></t>
<t tx="ekr.20180403105722.1"></t>
<t tx="ekr.20180403110757.1"></t>
<t tx="ekr.20180403114533.1"></t>
<t tx="ekr.20180403114558.1"></t>
<t tx="ekr.20180403114818.1"></t>
<t tx="ekr.20180403115138.1"></t>
<t tx="ekr.20180403115320.1"># Alt+Ctrl+E set-find-everywhere
# Alt+Ctrl+N set-find-node-only
# Alt+Ctrl+S set-find-suboutline-only
</t>
<t tx="ekr.20180403115410.1"></t>
<t tx="ekr.20180403115435.1"></t>
<t tx="ekr.20180403115620.1"></t>
<t tx="ekr.20180403115639.1"></t>
<t tx="ekr.20180403115721.1"></t>
<t tx="ekr.20180403115738.1"></t>
<t tx="ekr.20180403115745.1"></t>
<t tx="ekr.20180403120726.1"></t>
<t tx="ekr.20180403120838.1"></t>
<t tx="ekr.20180403122045.1"></t>
<t tx="ekr.20180403122225.1"></t>
<t tx="ekr.20180403123734.1"></t>
<t tx="ekr.20180403124541.1"></t>
<t tx="ekr.20180403153650.1"></t>
<t tx="ekr.20180403153949.1"></t>
<t tx="ekr.20180403154314.1"></t>
<t tx="ekr.20180403154327.1"></t>
<t tx="ekr.20180403154533.1"></t>
<t tx="ekr.20180403154703.1"></t>
<t tx="ekr.20180403155811.1"></t>
<t tx="ekr.20180405110859.1"></t>
<t tx="ekr.20180405112647.1"></t>
<t tx="ekr.20180405112755.1"></t>
<t tx="ekr.20180405112923.1"></t>
<t tx="ekr.20180405112939.1"></t>
<t tx="ekr.20180406013812.1"></t>
<t tx="ekr.20180406014050.1"></t>
<t tx="ekr.20180406014102.1"></t>
<t tx="ekr.20180406014111.1"></t>
<t tx="ekr.20180406014118.1"></t>
<t tx="ekr.20180406014127.1"></t>
<t tx="ekr.20180411070112.1">The setting only has effect on MacOS.
False: Legacy operation.
True:  Replace the Meta key with the Alt Key.
       This allows Windows Keyboards to be used without changing key bindings.
</t>
<t tx="ekr.20180511075115.1"></t>
<t tx="ekr.20180525053145.1">True: use jedi for autocompletion if available.
See https://jedi.readthedocs.io/en/latest/index.html
</t>
<t tx="jlunz.20150821113251.1">def html_tag():
    """expand &lt;tag&gt; to 
       &lt;tag&gt;\n&lt;/tag&gt; with proper indendation"""
    from leo.core.leoQt import QtCore
    widget = c.frame.body.widget
    scrollPosition = widget.getYScrollPosition()
    textCursor = widget.textCursor()
    tCurPosition = textCursor.position()  
    i = tCurPosition - len(_abr)
    b = c.p.b
    s = []
    while i and b[i] != '&lt;':
        s[0:0] = b[i]
        i -= 1
    start = i
    s = ''.join(s)
    s_close = s.split()[0]
    indent = 0
    while i and b[i] != '\n':
        indent += 1
        i -= 1
    if indent:
        indent -= 1
    def later(c=c, indent=indent, b=b, s=s, _abr=_abr):
        offset = len("%s&lt;%s&gt;\n%s    " % (b[:start], s, ' '*indent))
        c.p.b = "%s&lt;%s&gt;\n%s    \n%s&lt;/%s&gt;%s" % (
            b[:start], s, ' '*indent, ' '*indent, s_close, b[start+len(s)+len(_abr):]
        )
        widget.setYScrollPosition(scrollPosition)
        textCursor.setPosition(offset)
        widget.setTextCursor(textCursor)
        c.bodyWantsFocusNow()
        
    QtCore.QTimer.singleShot(0, later)
</t>
<t tx="jlunz.20151119171553.1"></t>
<t tx="jlunz.20151120072157.1">True: Wrap body text.

</t>
<t tx="leohag.20081204085551.13"># Don't change this unless you know what you are doing.</t>
<t tx="nh910.20110621123823.3423"></t>
<t tx="peckj.20130514082859.5599"></t>
<t tx="peckj.20130514082859.5600">This defines the font size for body text in print outs.

Size is in px.  Default 12.</t>
<t tx="peckj.20130514082859.5601">This determines the font family for print outs.  It's highly recommended
to choose a monospaced font.

Default: DejaVu Sans Mono</t>
<t tx="peckj.20131012154112.5294">Settings for the rss.py plugin.</t>
<t tx="peckj.20131012154112.5295">Format for headlines of RSS feed entries.  Valid tokens are:

&lt;date&gt; - the date, formatted according to `@string rss-date-format`
&lt;title&gt; - the entry title
&lt;link&gt; - the entry link (not recommended in headline)
&lt;summary&gt; - the entry summary (extremely not recommeded in headline)</t>
<t tx="peckj.20131012154112.5296">@url &lt;link&gt;
\n
&lt;title&gt;
&lt;date&gt;
\n
&lt;summary&gt;</t>
<t tx="peckj.20131012154112.5297">A valid string to act as the `fmt` string datetime.time.strftime().</t>
<t tx="peckj.20131012154112.5298">If True, newer entries are on top.
If False, older entries are on top.</t>
<t tx="peckj.20131101143409.5814"></t>
<t tx="peckj.20131101143409.5816">@
Default False

If True, all @settings-&gt;@nodewatch nodes in the current outline are executed when the outline loads.

@c</t>
<t tx="peckj.20131113130420.8678">@killcolor 

True: create minibuffer commands for each @rclick node.
Default False.</t>
<t tx="peckj.20140113150237.4603"></t>
<t tx="peckj.20140113150237.4604">One of 'compare', 'ndiff', or 'unified_diff'.  See the nodediff.py docstring for more info.</t>
<t tx="peckj.20140218151502.4819"></t>
<t tx="peckj.20140218151502.4820">Set to False to make sftp.py prompt you for credentials every time.</t>
<t tx="peckj.20150421103556.1"></t>
<t tx="peckj.20150421103611.1"></t>
<t tx="peckj.20150421103616.1"></t>
<t tx="peckj.20150421103626.1"></t>
<t tx="peckj.20150421103633.1"></t>
<t tx="peckj.20150421103639.1"></t>
<t tx="tbnorth.20160414102131.1">Alt drag onto another node indicates dropped node should
be added as a child of the receiving node, set this to
False to not expand the receiving node, keeping a list of
recipient nodes conveniently compact for additional drops.</t>
<t tx="tbnorth.20170111153412.1"></t>
<t tx="tbnorth.20170111153417.1">Automatically wrap text (insert newline) when typing exceeds this column.

Toggle on/off with `justify-toggle-auto` command, off initially unless
`autojustify-on-at-start` is True.
</t>
<t tx="tbnorth.20170111153430.1">Turn text wrapping (newling insertion) on by default.

See `@int autojustify`
</t>
<t tx="tbrown.20081003103821.1">True: if the same file (basename) occurs more than once in the recent files
list, i.e. on two different paths it will appear as a submenu with the basename
as its heading, and the two (or more) paths as its entries.  This is easier to
scan visually than multiple full paths.  If recent_files_omit_directories is
True this setting has no effect.

False: don't use submenus for multiple path entries, unless recent_files_group_always
is true (and recent_files_omit_directories is False)
</t>
<t tx="tbrown.20081003103821.2">True: same as recent_files_group, except that even files (basenames) which are unique
have their containing path listed in the submenu - so visual clutter is reduced
but you can still see where things come from before you load them.

False: don't use submenus for multiple path entries, unless recent_files_group
is true (and recent_files_omit_directories is False)
</t>
<t tx="tbrown.20091129085043.11789"></t>
<t tx="tbrown.20091129085043.11790">file type (auto, shadow, etc.) without the '@', to use when
loading files</t>
<t tx="tbrown.20091129085043.11792">event hook used by active_path, headdclick1 is probably best</t>
<t tx="tbrown.20091129085043.11793"># regular expressions (case insensitive) for files/directories
# active_path won't list, one per line.
#
# NOTE: directory names are always wrapped in '/', so write a
# pattern to target '/.svn/' (e.g. "^/\.bzr/$"), not '.svn'.
#
# e.g.
#
#   ^/\.bzr/$    - ignore directories called '.bzr'
#   \.pyc$     -ignore files ending in '.pyc'
</t>
<t tx="tbrown.20091129085043.11795"># regular expressions (case insensitive) for files/directories
# active_path loads automatically
# e.g.
#
#   ^readme    - load any file starting with 'readme'
</t>
<t tx="tbrown.20100304170159.5189">Should active_path load docstrings for python files?</t>
<t tx="tbrown.20100401100336.16108">controls the maximum time active_path will spend on a recursive operation.</t>
<t tx="tbrown.20100401100336.31583">controls the maximum size file active_path will open without query.</t>
<t tx="tbrown.20100524101550.4704">@wrap

This setting specifies **indicator text** that indicates that an @button button has right-click menu items created by @rclick nodes.

Unicode chars like ▼ ▾ and … are typical choices for this text.

For each @button node, Leo adds right-click menu items for:

- @rclick nodes directly *following* the @button.

- @rclick nodes that are *children* of the @button node, provided that the @button node has no ``@others`` directive.

**Important**: Leo adds two standard right-click menu items for each @button node: ``Remove Button`` and ``Goto Script``. Leo adds the indicator text **only** to buttons that contain right-click menu items in addition to these two standard right-click menu items.</t>
<t tx="tbrown.20110212091818.20118">Set to False, dragging nodes between different outlines
creates copies.  Set to True, the node is moved and no
longer exists in the source outline.</t>
<t tx="tbrown.20110430104941.30247"></t>
<t tx="tbrown.20110430104941.30250">When displaying the other end of a link in the list of links
backlink uses the headline of the other node.  This setting
prepends (negative values) or appends (positive values) the
required number of parent names to the other nodes name.

So for example, you may see links listed as:
    
    &lt;- taxa
    &lt;- taxa
    &lt;- taxa

which is not helpful.  By setting this value to 1, you would see

    &lt;- taxa &lt; source_field
    &lt;- taxa &lt; observation
    &lt;- taxa &lt; record

where the extra information is the name of the linked node's parent.
</t>
<t tx="tbrown.20111114201921.23020"># extensions for files/directories
# active_path will load as binary, i.e. using external software
# use lower case only
.pdf
</t>
<t tx="tbrown.20120820202856.25328">If this @string is set to something other than None, *and*
@bool scripting-at-script-nodes = True, then substitutions
will be made when abbreviations are inserted.  For example
set abbreviations-subst-start to ``{|{`` and
abbreviations-subst-end to ``}|}`` and an abbreviation
like::

    date;;={|{import time;x=time.asctime()}|}

will expand to something like "Mon Aug 20 22:00:40 2012"

See also abbreviations-subst-env.
</t>
<t tx="tbrown.20120820202856.25329">See abbreviations-subst-start.  This setting,
abbreviations-subst-end, has no effect if
abbreviations-subst-start is not set.</t>
<t tx="tbrown.20120821183537.18662">The end of a placeholder for template expansions, e.g.
`|&gt;`. See @string abbreviations-place-start.</t>
<t tx="tbrown.20120821183537.18663">Start of a placeholder for template expansions.  E.g.
the ``&lt;|`` in::

    w;;=while &lt;|condition|&gt;:
    \:    &lt;|code|&gt;

This would expand with the ``&lt;|condition|&gt;`` selected, and ``,,``,
if that's an abbreviation linked to next_place(), see 
``@@data abbreviations examples``, would select ``&lt;|code|&gt;``.</t>
<t tx="tbrown.20130310101647.34743"></t>
<t tx="tbrown.20130310101647.34744"># if set to True, g.redirectStdout/err will be used to
# redirect stdout and stderr to the log pane when vs-eval is used</t>
<t tx="tbrown.20130813134319.7223"></t>
<t tx="tbrown.20130813134319.7224">Set this to True for rich text edits to be saved automatically.

BE CAREFUL - plain-text nodes will be converted to rich text
without confirmation if you edit them in rich text mode when
this is True.</t>
<t tx="tbrown.20130813181208.23979"># This node's non-"#" content should be valid java-script.  This is
# a toolbar configuration for CKEditor 4.2.
# 
# To enable all CKE features, clear this setting, i.e. remove
# everything below these "#" lines in your myLeoSettings.leo

{toolbar: [ 
   	{ name: 'document', groups: [ 'mode', 'document', 'doctools' ], items: [ 'Source' ] },
	{ name: 'clipboard', groups: [ 'clipboard', 'undo' ], items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] },
	{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ], items: [ 'Scayt' ] },
	{ name: 'styles', items: [ 'Styles', 'Format' ] },
	{ name: 'tools', items: [ 'Maximize' ] },
	{ name: 'others', items: [ '-' ] },
	{ name: 'about', items: [ 'About' ] },
	'/',
	{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ], items: [ 'Bold', 'Italic', 'Underline', 'Strike', '-', 'RemoveFormat', "TextColor", "BGColor" ] },
     { name: 'justification', items: ["JustifyLeft", "JustifyCenter", "JustifyRight", "JustifyBlock" ] },
	{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align' ], items: [ 'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote' ] },
	{ name: 'links', items: [ 'Link', 'Unlink', 'Anchor' ] },
	{ name: 'insert', items: [ 'Image', 'Table', 'HorizontalRule', 'SpecialChar' ] }
]}
</t>
<t tx="tbrown.20130916082438.55678">Sizes for the status bar splitter. The status bar shows "line: 1, col:
35, fcol: 35" on the left and the path to the current node on the right.

The default value "1 2" gives one third for the line number etc., and 2
thirds for node path.  You may find "1 4" or "1 5" makes it easier to see
all the relevant components of the node path without having to move the
splitter.

The string must be only two integers, separated by spaces and or commas.

Dev. note: this setting is new (201309) and can't be replaced by the
stylesheet, the other settings in this group should probably be handled
by the stylesheet and could be considered for removal.</t>
<t tx="tbrown.20131122091143.23829"></t>
<t tx="tbrown.20131122091143.23833"></t>
<t tx="tbrown.20131122091143.23834"></t>
<t tx="tbrown.20131122091143.23835"></t>
<t tx="tbrown.20131122091143.23836"></t>
<t tx="tbrown.20131122091143.23837"></t>
<t tx="tbrown.20131122091143.23838"></t>
<t tx="tbrown.20131122091143.23839"></t>
<t tx="tbrown.20131122091143.23840"></t>
<t tx="tbrown.20131122094200.2512">This setting must exist for Ctrl-mousewheel font zooming to work.
</t>
<t tx="tbrown.20140101093550.25136"></t>
<t tx="tbrown.20140101093550.25138">Huh?
valid values are: normal,bold,100,..,900
</t>
<t tx="tbrown.20140101093550.25140">none or underline</t>
<t tx="tbrown.20140101093550.25146"></t>
<t tx="tbrown.20140101093550.25147">bold or regular</t>
<t tx="tbrown.20140101093550.25148">none or underline</t>
<t tx="tbrown.20140101093550.25154"></t>
<t tx="tbrown.20140101093550.25155">bold or regular</t>
<t tx="tbrown.20140101093550.25156">none or underline</t>
<t tx="tbrown.20140101093550.25162"></t>
<t tx="tbrown.20140101093550.25163">bold or regular</t>
<t tx="tbrown.20140101093550.25164">none or underline</t>
<t tx="tbrown.20140101093550.25165"></t>
<t tx="tbrown.20140101093550.25169"></t>
<t tx="tbrown.20140101093550.25171"></t>
<t tx="tbrown.20140101093550.25173"></t>
<t tx="tbrown.20140102100730.27777"></t>
<t tx="tbrown.20140102100730.27778">Number of levels (rows) of hieararchical bookmarks to show.  0 (zero)
collapse hieracrch and show all bookmarks.  1 or more sets max. levels
displayed at once, see bookmarks plugin docs.</t>
<t tx="tbrown.20140505094209.37266">Show close box (the 'X') on outlien tabs - they can be closed with
Ctrl-W or middle mouse click, so this optionally hides the
redundant 'X'</t>
<t tx="tbrown.20140514191846.42168">These give the width and style of the border surrounding the active pane.
</t>
<t tx="tbrown.20140514191846.42169"># Set to None to disable border styling.</t>
<t tx="tbrown.20140514191846.42170"></t>
<t tx="tbrown.20140514191846.42171"></t>
<t tx="tbrown.20140514191846.42173"></t>
<t tx="tbrown.20140609102412.32426">from leo.core.leoQt import QtWidgets

date = g.app.gui.runAskDateTimeDialog(
    c, "Select date, will be copied to clipboard")
if date:
    text = date.strftime("%Y-%m-%d %I:%M:%S %p")
    QtWidgets.QApplication.clipboard().setText(text)
    g.es("%s\ncopied to clipboard"%text)
else:
    g.es("No date selected")
</t>
<t tx="tbrown.20140609102412.32428">'''
Create a combo box in the icon area that shows color names.
It writes the selected color name to the clipboard.
'''
c.k.simulateCommand('show-color-names')
</t>
<t tx="tbrown.20140609102412.32430">'''Show a dialog for picking fonts.'''
c.k.simulateCommand('show-fonts')
</t>
<t tx="tbrown.20140814090009.57475"></t>
<t tx="tbrown.20140814090009.57476"></t>
<t tx="tbrown.20141101105337.1"></t>
<t tx="tbrown.20141101105337.2"># regex patterns for text to be hidden by the wikiview plugin
# Blanks lines and lines starting with '#' are comment lines.

# Each non-comment line represents a pattern.
# Use \b# for patterns starting with '#'
# Only `groups` parts of the pattern in parentheses will be shown.
# The first character of the pattern (not counting \b) is the leadin character.
# The pattern will be applied only for strings starting with the leadin character.

# UNLs

\bunl:(//.*#.*--&gt;).*
\bunl:(//.*#).*
\bunl:(//.*--&gt;).*
\bunl:(//).*
\bfile:(//.*--&gt;)\S+\b
\bhttps?:(//.*--&gt;)\S+\b

# regular urls

\bhttps?:(//.*/)\w+\b
\bfile:(//.*/)\w+\b

# restructuredText `Visible text &lt;http://invisible.url/here&gt;`

(`)\S+(\s*&lt;https?://\S+&gt;`_)
(`)\S+(\s*&lt;file://\S+&gt;`_)

# Test patterns: see http://pythex.org/

# unl://leoSettings.leo#@settings--&gt;Plugins--&gt;wikiview plugin
# unl://@settings--&gt;Plugins--&gt;wikiview plugin--&gt;@bool wikiview-active = True
# unl://#@settings--&gt;Plugins--&gt;wikiview plugin--&gt;@bool wikiview-active = True
# unl://#@settings--&gt;Plugins--&gt;wikiview plugin--&gt;@bool wikiview-active
# unl://#@settings--&gt;Plugins--&gt;wikiview plugin
# file://#some--&gt;headlines--&gt;mynode
# http://#some--&gt;headlines--&gt;mynode
# https://#some--&gt;headlines--&gt;mynode
# http://www.google.com/search
# https://www.google.com/search
# file://www.google.com/search
# `Python &lt;https://www.python.org/&gt;`_ 
# `Python &lt;file://www.python.org/&gt;`_ 
</t>
<t tx="tbrown.20141101105337.3">Should wikiview mode be active by default?</t>
<t tx="tbrown.20150807123339.1" lineYOffset="4b002e">Set to True to enable node appearance modifications
See tree-declutter-patterns
</t>
<t tx="tbrown.20150807123421.1" lineYOffset="4b002e"># **Decluttering** replaces controls custom formatting of headlines, including:

# - Hiding or changing headline text,
# - Adding icons to headlines,
# - Changing the styling of headlines.

# @bool tree-declutter must be True to enable decluttering.

# blank lines and lines starting with '#' are ignored.
# See the children of this node for details.
</t>
<t tx="tbrown.20150810084824.1">Separation between icons on tree node items</t>
<t tx="tbrown.20150821171510.1">This data is used by SettingsFinder.build_menu() to build the
`Edit settings` submenu of the `Settings` menu.  You should *not*
need to copy this to your personal settings.  If this data doesn't
reference settings that should be findable under the `Edit settings`
submenu, please report[1] them for addition in the distributed
version of Leo.

[1] leo-editor@googlegroups.com or https://github.com/leo-editor/leo-editor/issues
</t>
<t tx="tbrown.20150821171510.10">focused-border-focus-color</t>
<t tx="tbrown.20150821171510.100">find-font-family</t>
<t tx="tbrown.20150821171510.101">find-font-size</t>
<t tx="tbrown.20150821171510.102">find-font-style</t>
<t tx="tbrown.20150821171510.103">find-font-weight</t>
<t tx="tbrown.20150821171510.104">find-pattern-font-family</t>
<t tx="tbrown.20150821171510.105"></t>
<t tx="tbrown.20150821171510.106">gutter-font-family</t>
<t tx="tbrown.20150821171510.107">gutter-font-size</t>
<t tx="tbrown.20150821171510.108">gutter-font-style</t>
<t tx="tbrown.20150821171510.109">gutter-font-weight</t>
<t tx="tbrown.20150821171510.11">focused-border-unfocus-color</t>
<t tx="tbrown.20150821171510.110"></t>
<t tx="tbrown.20150821171510.111">log-sel-fg</t>
<t tx="tbrown.20150821171510.112">log-sel-bg</t>
<t tx="tbrown.20150821171510.113">log-font-family</t>
<t tx="tbrown.20150821171510.114">log-font-size</t>
<t tx="tbrown.20150821171510.115">log-font-weight</t>
<t tx="tbrown.20150821171510.116">log-font-style</t>
<t tx="tbrown.20150821171510.117"></t>
<t tx="tbrown.20150821171510.118">minibuffer-font-family</t>
<t tx="tbrown.20150821171510.119">minibuffer-font-size</t>
<t tx="tbrown.20150821171510.12"></t>
<t tx="tbrown.20150821171510.120">minibuffer-font-weight</t>
<t tx="tbrown.20150821171510.121">minibuffer-font-style</t>
<t tx="tbrown.20150821171510.122"></t>
<t tx="tbrown.20150821171510.123"></t>
<t tx="tbrown.20150821171510.124">tree-font-family</t>
<t tx="tbrown.20150821171510.125">tree-font-size</t>
<t tx="tbrown.20150821171510.126">tree-font-weight</t>
<t tx="tbrown.20150821171510.127">tree-font-style</t>
<t tx="tbrown.20150821171510.128"></t>
<t tx="tbrown.20150821171510.129">head-font-family</t>
<t tx="tbrown.20150821171510.13">run-script-btn-bg</t>
<t tx="tbrown.20150821171510.130">head-font-size</t>
<t tx="tbrown.20150821171510.131">head-font-weight</t>
<t tx="tbrown.20150821171510.132">head-font-style</t>
<t tx="tbrown.20150821171510.133"></t>
<t tx="tbrown.20150821171510.134">edit-label-font-family</t>
<t tx="tbrown.20150821171510.135">edit-label-font-size</t>
<t tx="tbrown.20150821171510.136">edit-label-font-weight</t>
<t tx="tbrown.20150821171510.137">edit-label-font-style</t>
<t tx="tbrown.20150821171510.138"></t>
<t tx="tbrown.20150821171510.139">status-font-family</t>
<t tx="tbrown.20150821171510.14">debug-script-btn-bg</t>
<t tx="tbrown.20150821171510.140">status-font-size</t>
<t tx="tbrown.20150821171510.141">status-font-weight</t>
<t tx="tbrown.20150821171510.142">status-font-style</t>
<t tx="tbrown.20150821171510.143"># These control such things as margin width and style.
# The most important settings are the Focused border styles.</t>
<t tx="tbrown.20150821171510.144"></t>
<t tx="tbrown.20150821171510.145">dialog-border</t>
<t tx="tbrown.20150821171510.146">dialog-margin</t>
<t tx="tbrown.20150821171510.147">These give the width and style of the border surrounding the active pane.
</t>
<t tx="tbrown.20150821171510.148">focused-border-style</t>
<t tx="tbrown.20150821171510.149">focused-border-width</t>
<t tx="tbrown.20150821171510.15">script-button-button-btn-bg</t>
<t tx="tbrown.20150821171510.150"></t>
<t tx="tbrown.20150821171510.151">use-gutter</t>
<t tx="tbrown.20150821171510.152">gutter-w-adjust</t>
<t tx="tbrown.20150821171510.153">gutter-y-adjust</t>
<t tx="tbrown.20150821171510.154"></t>
<t tx="tbrown.20150821171510.155">minibuffer-border</t>
<t tx="tbrown.20150821171510.156">minibuffer-margin</t>
<t tx="tbrown.20150821171510.157"></t>
<t tx="tbrown.20150821171510.158">stacked-widget-padding</t>
<t tx="tbrown.20150821171510.159"></t>
<t tx="tbrown.20150821171510.16">script-button-btn-bg</t>
<t tx="tbrown.20150821171510.160">status-border-width</t>
<t tx="tbrown.20150821171510.161">These must be @string settings, even though they do affect colors.</t>
<t tx="tbrown.20150821171510.162">vim-mode-normal-border</t>
<t tx="tbrown.20150821171510.163">vim-mode-insert-border</t>
<t tx="tbrown.20150821171510.164">vim-mode-visual-border</t>
<t tx="tbrown.20150821171510.165"></t>
<t tx="tbrown.20150821171510.166">tree-image-closed</t>
<t tx="tbrown.20150821171510.167">tree-image-open</t>
<t tx="tbrown.20150821171510.168">tree-icon-separation</t>
<t tx="tbrown.20150821171510.169">odd headline just to not clash with regular plugins menu</t>
<t tx="tbrown.20150821171510.17">generic-button-btn-bg</t>
<t tx="tbrown.20150821171510.170"></t>
<t tx="tbrown.20150821171510.171"></t>
<t tx="tbrown.20150821171510.172">bookmarks_base_color</t>
<t tx="tbrown.20150821171510.173">bookmarks_base_border</t>
<t tx="tbrown.20150821171510.174">bookmarks_base_decoration</t>
<t tx="tbrown.20150821171510.175">bookmarks_base_family</t>
<t tx="tbrown.20150821171510.176">bookmarks_base_margin</t>
<t tx="tbrown.20150821171510.177">bookmarks_base_padding</t>
<t tx="tbrown.20150821171510.178">bookmarks_base_size</t>
<t tx="tbrown.20150821171510.179">bookmarks_base_style</t>
<t tx="tbrown.20150821171510.18">quick-move-btn-bg</t>
<t tx="tbrown.20150821171510.180">bookmarks_base_weight</t>
<t tx="tbrown.20150821171510.181"></t>
<t tx="tbrown.20150821171510.182">bookmarks_children_color</t>
<t tx="tbrown.20150821171510.183">bookmarks_children_decoration</t>
<t tx="tbrown.20150821171510.184">bookmarks_children_family</t>
<t tx="tbrown.20150821171510.185">bookmarks_children_size</t>
<t tx="tbrown.20150821171510.186">bookmarks_children_style</t>
<t tx="tbrown.20150821171510.187">bookmarks_children_weight</t>
<t tx="tbrown.20150821171510.188"></t>
<t tx="tbrown.20150821171510.189">bookmarks_current_color</t>
<t tx="tbrown.20150821171510.19">interact-btn-bg</t>
<t tx="tbrown.20150821171510.190">bookmarks_current_decoration</t>
<t tx="tbrown.20150821171510.191">bookmarks_current_size</t>
<t tx="tbrown.20150821171510.192">bookmarks_current_style</t>
<t tx="tbrown.20150821171510.193">bookmarks_current_weight</t>
<t tx="tbrown.20150821171510.194"></t>
<t tx="tbrown.20150821171510.195">bookmarks_expanded_color</t>
<t tx="tbrown.20150821171510.196">bookmarks_expanded_decoration</t>
<t tx="tbrown.20150821171510.197">bookmarks_expanded_size</t>
<t tx="tbrown.20150821171510.198">bookmarks_expanded_style</t>
<t tx="tbrown.20150821171510.199">bookmarks_expanded_weight</t>
<t tx="tbrown.20150821171510.2"></t>
<t tx="tbrown.20150821171510.20">at-button-btn-bg</t>
<t tx="tbrown.20150821171510.200">bookmarks_font_size</t>
<t tx="tbrown.20150821171510.201"></t>
<t tx="tbrown.20150821171510.202">screencast-bg</t>
<t tx="tbrown.20150821171510.203">screencast-font-family</t>
<t tx="tbrown.20150821171510.204">screencast-font-size</t>
<t tx="tbrown.20150821171510.205">screencast-font-weight</t>
<t tx="tbrown.20150821171510.206">screencast-font-style</t>
<t tx="tbrown.20150821171510.21"></t>
<t tx="tbrown.20150821171510.22">find-tab-bg</t>
<t tx="tbrown.20150821171510.23"></t>
<t tx="tbrown.20150821171510.24">gutter-bg</t>
<t tx="tbrown.20150821171510.25">gutter-fg</t>
<t tx="tbrown.20150821171510.26"></t>
<t tx="tbrown.20150821171510.27">log-fg</t>
<t tx="tbrown.20150821171510.28">log-bg</t>
<t tx="tbrown.20150821171510.29"></t>
<t tx="tbrown.20150821171510.3"></t>
<t tx="tbrown.20150821171510.30">minibuffer-fg</t>
<t tx="tbrown.20150821171510.31">minibuffer-bg</t>
<t tx="tbrown.20150821171510.32">minibuffer-sel-fg</t>
<t tx="tbrown.20150821171510.33">minibuffer-sel-bg</t>
<t tx="tbrown.20150821171510.34"></t>
<t tx="tbrown.20150821171510.35"></t>
<t tx="tbrown.20150821171510.36">tree-fg</t>
<t tx="tbrown.20150821171510.37">tree-bg</t>
<t tx="tbrown.20150821171510.38"></t>
<t tx="tbrown.20150821171510.39">head-fg</t>
<t tx="tbrown.20150821171510.4">body-bg</t>
<t tx="tbrown.20150821171510.40">head-bg</t>
<t tx="tbrown.20150821171510.41">head-sel-fg</t>
<t tx="tbrown.20150821171510.42">head-sel-bg</t>
<t tx="tbrown.20150821171510.43"></t>
<t tx="tbrown.20150821171510.44">edit-label-border</t>
<t tx="tbrown.20150821171510.45">edit-label-margin</t>
<t tx="tbrown.20150821171510.46">edit-label-bg</t>
<t tx="tbrown.20150821171510.47">edit-label-fg</t>
<t tx="tbrown.20150821171510.48"># These are provided for compatibility with old settings.
</t>
<t tx="tbrown.20150821171510.49">text-foreground</t>
<t tx="tbrown.20150821171510.5">body-fg</t>
<t tx="tbrown.20150821171510.50">text-foreground-body</t>
<t tx="tbrown.20150821171510.51">text-foreground-tree</t>
<t tx="tbrown.20150821171510.52">text-foreground-log</t>
<t tx="tbrown.20150821171510.53"></t>
<t tx="tbrown.20150821171510.54">render-bg</t>
<t tx="tbrown.20150821171510.55">render-fg</t>
<t tx="tbrown.20150821171510.56"></t>
<t tx="tbrown.20150821171510.57">scroll-area-bg</t>
<t tx="tbrown.20150821171510.58"></t>
<t tx="tbrown.20150821171510.59">splitter-bg</t>
<t tx="tbrown.20150821171510.6">body-sel-fg</t>
<t tx="tbrown.20150821171510.60">splitter-handle-bg</t>
<t tx="tbrown.20150821171510.61">splitter-border-fg</t>
<t tx="tbrown.20150821171510.62">splitter-border-style</t>
<t tx="tbrown.20150821171510.63"></t>
<t tx="tbrown.20150821171510.64">status-bg</t>
<t tx="tbrown.20150821171510.65">status-fg</t>
<t tx="tbrown.20150821171510.66">status-border-style</t>
<t tx="tbrown.20150821171510.67">status-border-color</t>
<t tx="tbrown.20150821171510.68"></t>
<t tx="tbrown.20150821171510.69">find-found-bg</t>
<t tx="tbrown.20150821171510.7">body-sel-bg</t>
<t tx="tbrown.20150821171510.70">find-found-fg</t>
<t tx="tbrown.20150821171510.71">find-not-found-bg</t>
<t tx="tbrown.20150821171510.72">find-not-found-fg</t>
<t tx="tbrown.20150821171510.73"></t>
<t tx="tbrown.20150821171510.74">frame-bg</t>
<t tx="tbrown.20150821171510.75">stacked-widget-border-color</t>
<t tx="tbrown.20150821171510.76">stacked-widget-bg</t>
<t tx="tbrown.20150821171510.77">tabbed-widget-bg</t>
<t tx="tbrown.20150821171510.78">Important: changing the Basic Font settings below should be all you need to
do at first. All other font settings are defined in terms of the basic fonts.</t>
<t tx="tbrown.20150821171510.79"># All other fonts are defined in terms of these basic fonts.
# Changing the basic fonts are all that most users will want to do.</t>
<t tx="tbrown.20150821171510.80">font-family</t>
<t tx="tbrown.20150821171510.81">font-size</t>
<t tx="tbrown.20150821171510.82">medium-font-size</t>
<t tx="tbrown.20150821171510.83">small-font-size</t>
<t tx="tbrown.20150821171510.84">font-style</t>
<t tx="tbrown.20150821171510.85">font-weight</t>
<t tx="tbrown.20150821171510.86"></t>
<t tx="tbrown.20150821171510.87">body-font-family</t>
<t tx="tbrown.20150821171510.88">body-font-size</t>
<t tx="tbrown.20150821171510.89">body-font-style</t>
<t tx="tbrown.20150821171510.9"></t>
<t tx="tbrown.20150821171510.90">body-font-weight</t>
<t tx="tbrown.20150821171510.92">Warning: These affect system dialogs.

Don't change these unless you are aware of the consequences</t>
<t tx="tbrown.20150821171510.93">dialog-font-family</t>
<t tx="tbrown.20150821171510.94">dialog-font-size</t>
<t tx="tbrown.20150821171510.95">dialog-font-weight</t>
<t tx="tbrown.20150821171510.96">dialog-font-style</t>
<t tx="tbrown.20150821171510.97"></t>
<t tx="tbrown.20150821171510.98">checkbox-font-family</t>
<t tx="tbrown.20150821171510.99">checkbox-font-size</t>
<t tx="tbrown.20151010094807.1">Should find commands show their result in the status line?
This setting must be explicitly set to `False` to suppress
the status line output, just deleting it to get a value of `None`
won't work - this preserves the default `True` action in the
absence of this setting.</t>
<t tx="tbrown.20151114110207.1">"Abbreviation" to trigger the selection of the next placeholder,
i.e. typing ,, will select the next &lt;|placeholder|&gt; text, after
removing the &lt;| and |&gt;</t>
<t tx="tbrown.20160130095933.1"></t>
<t tx="tbrown.20160130095933.2"></t>
<t tx="tbrown.20160130095933.3"></t>
<t tx="tbrown.20160130095933.4"></t>
<t tx="tbrown.20170710093248.1">If true, tailing whitespace (spaces and tabs) will be underlined
with small dots in `trailing_whitespace_color` (default red).</t>
<t tx="tbrown.20171128211219.1"># These control the effects of modifiers (Shift, Control, Alt) on left
# clicks on bookmarks.  Available modifiers are:
#
#     None AltControl ControlShift Alt Control Shift
#     AltShift AltControlShift
#
# Available actions are:
#
#     goto_bookmark update_bookmark rename_bookmark edit_bookmark
#     delete_bookmark add_child navigate hoist promote
#
# There's one more action than modifier combo., so you have to work
# out what you don't want.  `promote` is missing by default.

None goto_bookmark
AltControl update_bookmark
ControlShift rename_bookmark
Alt edit_bookmark
Control delete_bookmark
Shift add_child
AltShift navigate
AltControlShift hoist
</t>
<t tx="tbrown.20180212145842.1"># pairs of lines in this text indicate search and replace targets for
# cleaning the recent files list.  Each pair of lines should start with
# "REPLACE:" (first line) and "WITH:" (second line).  For example:
#
#  REPLACE: .gnome-desktop
#     WITH: My Desktop
#  REPLACE: /mnt/usr1/
#     WITH: /

</t>
<t tx="tbrown.20180525163032.1">If True, names uses headline "Foo.bar" for bar() defined in class
Foo, and headline "bar (foo.py)" for bar() defined at top level in
foo.py.  This is useful if you've cloned the node so its origin is
not obvious from context.

If False, does not do the above, useful if you don't use clones
and don't want the visual clutter of repeated class / file names.</t>
<t tx="ville.20090701225947.3902"># Open current node in external editor. 'v' is mnemonic for 'vi', because vi users request this most
# cm-external-editor = Alt-v</t>
<t tx="ville.20091008201813.3909">Qt ui uses a different (simpler) setup for creating context menus,
a single @data contextmenu_commands node. </t>
<t tx="ville.20091008201813.3911"># Important: the contextmenu.py plugin must be enabled
# for these settings to take effect.

# Add commands to contextmenu
# The format is &lt;command&gt; SPACE &lt;description&gt;

# stickynote Create a sticky note
# read-at-file-nodes Read in file nodes

copy-node Copy Node
cut-node Cut Node
paste-node Paste Node
paste-retaining-clones Paste Node As Clone</t>
<t tx="vitalije.20100306144625.8944"></t>
<t tx="vitalije.20100306144625.8945"></t>
<t tx="vitalije.20100306144625.8946"># Time between saves in seconds</t>
<t tx="vitalije.20170811125150.1"></t>
</tnodes>
</leo_file>
