<?xml version="1.0" encoding="utf-8"?>
<!-- Created by Leo: http://leoeditor.com/leo_toc.html -->
<?xml-stylesheet ekr_test ?>
<leo_file xmlns:leo="http://leoeditor.com/namespaces/leo-python-editor/1.1" >
<leo_header file_format="2" tnodes="0" max_tnode_index="0" clone_windows="0"/>
<globals body_outline_ratio="0.5" body_secondary_ratio="0.5">
	<global_window_position top="50" left="50" height="500" width="700"/>
	<global_log_window_position top="0" left="0" height="0" width="0"/>
</globals>
<preferences/>
<find_panel_settings/>
<vnodes>
<v t="ekr.20131119143342.18967"><vh>@settings</vh>
<v t="ekr.20131119143342.18966"><vh>@string target_language = plain</vh></v>
</v>
<v t="ekr.20131119143342.18530"><vh>About this file</vh></v>
<v t="ekr.20131119143342.18956"><vh>Example @button nodes</vh>
<v t="ekr.20131119143342.18962"><vh>@buttons</vh>
<v t="ekr.20131119143342.18964"><vh>@button leo-settings-hi</vh></v>
</v>
</v>
<v t="ekr.20131119143342.18968"><vh>Example @command nodes</vh>
<v t="ekr.20131119143342.19002"><vh>@commands</vh>
<v t="ekr.20131119143342.19004"><vh>@command redefine g.findReference</vh>
<v t="ekr.20131119143342.19005"><vh>myFindReference</vh></v>
</v>
<v t="ekr.20131119143342.19006"><vh>Docstrings</vh>
<v t="ekr.20131119143342.19007"><vh>@command print-cmd-docstrings</vh></v>
</v>
<v t="ekr.20131119143342.19008"><vh>Editing body text</vh>
<v t="ekr.20131119143342.19009"><vh>@command align-to-col {modify as needed}</vh></v>
<v t="ekr.20131119143342.19010"><vh>@command c-to-python-clean-docs</vh>
<v t="ekr.20131119143342.19011"><vh>clean_doc</vh></v>
</v>
<v t="ekr.20131119143342.19012"><vh>@command clean-body</vh>
<v t="ekr.20131119143342.19013"><vh>clean_head</vh></v>
<v t="ekr.20131119143342.19014"><vh>clean_tail</vh></v>
</v>
<v t="ekr.20131119143342.19015"><vh>@command remove-newlines</vh></v>
</v>
<v t="ekr.20131119143342.19016"><vh>Importing files</vh>
<v t="ekr.20131119143342.19017"><vh>@command create @auto nodes {path,types} @args C:\apps\pygments\pygments,.py,.c</vh>
<v t="ekr.20131119143342.19018"><vh> importFiles (top-level)</vh></v>
<v t="ekr.20131119143342.19019"><vh>createLastChildOf</vh></v>
<v t="ekr.20131119143342.19020"><vh>disableAllNodes</vh></v>
<v t="ekr.20131119143342.19021"><vh>importDir</vh></v>
<v t="ekr.20131119143342.19022"><vh>loadAtAutoFiles</vh></v>
<v t="ekr.20131119143342.19023"><vh>run</vh></v>
</v>
</v>
<v t="ekr.20131119143342.19024"><vh>Node merging &amp; splitting</vh>
<v t="ekr.20131119143342.19025"><vh>@command flatten script</vh></v>
<v t="ekr.20131119143342.19026"><vh>@command join-node-above</vh></v>
<v t="ekr.20131119143342.19027"><vh>@command join-node-below</vh></v>
<v t="ekr.20131119143342.19028"><vh>@command promote-bodies</vh></v>
<v t="ekr.20131119143342.19029"><vh>@command split-defs</vh>
<v t="ekr.20131119143342.19030"><vh>make_node</vh></v>
<v t="ekr.20131119143342.19031"><vh>remove_trailing_decorators</vh></v>
<v t="ekr.20131119143342.19032"><vh>run</vh></v>
</v>
</v>
<v t="ekr.20131119143342.19033"><vh>Testing</vh>
<v t="ekr.20131119143342.19034"><vh>@command add-test</vh></v>
</v>
</v>
</v>
<v t="ekr.20131119143342.18880" a="E"><vh>Example abbreviations</vh>
<v t="ekr.20131119143342.18914"><vh>@data abbreviations examples</vh></v>
<v t="ekr.20131119143342.18897"><vh>@outline-data tree-abbreviations examples</vh>
<v t="ekr.20131119143342.18898"><vh>abc;;</vh>
<v t="ekr.20131119143342.18899"><vh>node 1</vh></v>
<v t="ekr.20131119143342.18900"><vh>node 2</vh></v>
</v>
<v t="ekr.20131119143342.18901"><vh>xyz;;</vh>
<v t="ekr.20131119143342.18902"><vh>node xyz</vh></v>
</v>
<v t="ekr.20131119143342.18903"><vh>per-commander-plugin;;</vh>
<v t="ekr.20131119143342.18904"><vh>@@file pluginname.py</vh>
<v t="ekr.20131119143342.18905"><vh>&lt;&lt; docstring &gt;&gt;</vh></v>
<v t="ekr.20131119143342.18906"><vh>&lt;&lt; version history &gt;&gt;</vh></v>
<v t="ekr.20131119143342.18907"><vh>&lt;&lt; imports &gt;&gt;</vh></v>
<v t="ekr.20131119143342.18908"><vh>init</vh></v>
<v t="ekr.20131119143342.18909"><vh>onCreate</vh></v>
<v t="ekr.20131119143342.18910"><vh>class pluginController</vh>
<v t="ekr.20131119143342.18911"><vh>__init__</vh></v>
</v>
</v>
</v>
<v t="ekr.20131119143342.18912"><vh>node xyz</vh></v>
</v>
<v t="ekr.20141014135135.2488"><vh>persistent state with json as a leo abbreviation</vh></v>
</v>
<v t="ekr.20131119143342.19202"><vh>Example key bindings</vh>
<v t="ekr.20131119143342.19203"><vh>@strings  [ignore,insert, overwrite] top_level_unbound_key_action = insert</vh></v>
<v t="ekr.20131119143342.19204"><vh>@keys Default Emacs shortcuts</vh>
<v t="ekr.20131119143342.19205"><vh>@shortcuts Emacs: A-E</vh></v>
<v t="ekr.20131119143342.19206"><vh>@shortcuts Emacs: F-M</vh></v>
<v t="ekr.20131119143342.19207"><vh>@shortcuts Emacs: N-Z</vh></v>
<v t="ekr.20131119143342.19208"><vh>@shortcuts Emacs: missing</vh></v>
<v t="ekr.20131119143342.19209"><vh>@shortcuts shift-f-keys</vh></v>
</v>
<v t="ekr.20131119143342.19210"><vh>@keys No bindings</vh>
<v t="ekr.20131119143342.19211"><vh>@shortcuts No bindings: A-E</vh></v>
<v t="ekr.20131119143342.19212"><vh>@shortcuts No bindings: F-M</vh></v>
<v t="ekr.20131119143342.19213"><vh>@shortcuts No bindings: N-Z</vh></v>
<v t="ekr.20131119143342.19214"><vh>@shortcuts shift-f-keys</vh></v>
</v>
<v t="ekr.20131119143342.19215"><vh>@keys Vim bindings</vh>
<v t="ekr.20131119143342.19216"><vh>Vim User Documentation</vh></v>
<v t="ekr.20131119143342.19217"><vh>Vim History</vh></v>
<v t="ekr.20131119143342.19218"><vh>Vim Developer Documentation</vh></v>
<v t="ekr.20131119143342.19219"><vh>Vim settings</vh>
<v t="ekr.20131119143342.19220"><vh>@strings [command,insert, overwrite] top_level_unbound_key_action = command</vh></v>
<v t="ekr.20131119143342.19221"><vh>@bool stayInTreeAfterEditHeadline = True</vh></v>
<v t="ekr.20131119143342.19222"><vh>@bool outline_pane_has_initial_focus = True</vh></v>
<v t="ekr.20131119143342.19223"><vh>@bool stayInTreeAfterSelect = True</vh></v>
</v>
<v t="ekr.20131119143342.19224"><vh>@shortcuts - vi miscellaneous</vh>
<v t="ekr.20131119143342.19225"><vh>@mode tree-undo</vh></v>
<v t="ekr.20131119143342.19226"><vh>@mode tree-redo</vh></v>
<v t="ekr.20131119143342.19227"><vh>@mode focus-to-tree</vh></v>
<v t="ekr.20131119143342.19228"><vh>@mode focus-to-body</vh></v>
<v t="ekr.20131119143342.19229"><vh>@mode body-command-line</vh>
<v t="ekr.20131119143342.19230"><vh>@mode body-command-revert</vh></v>
<v t="ekr.20131119143342.19231"><vh>@mode body-command-save</vh>
<v t="ekr.20131119143342.19232"><vh>@mode body-command-save-quit</vh>
<v t="ekr.20131119143342.19233"><vh>@mode body-command-save-quit-return</vh></v>
</v>
</v>
<v t="ekr.20131119143342.19234"><vh>@mode body-command-quit</vh></v>
</v>
<v t="ekr.20131119143342.19235"><vh>@mode tree-command-line</vh>
<v t="ekr.20131119143342.19236"><vh>@mode tree-command-revert</vh></v>
<v t="ekr.20131119143342.19237"><vh>@mode tree-command-save</vh>
<v t="ekr.20131119143342.19238"><vh>@mode tree-command-save-only</vh></v>
<v t="ekr.20131119143342.19239"><vh>@mode tree-command-save-quit</vh>
<v t="ekr.20131119143342.19240"><vh>@mode tree-command-save-quit-return</vh></v>
</v>
</v>
<v t="ekr.20131119143342.19241"><vh>@mode tree-command-quit</vh></v>
</v>
<v t="ekr.20131119143342.19242"><vh>@mode body-shift-z</vh>
<v t="ekr.20131119143342.19243"><vh>@mode body-shift-z-save-quit</vh></v>
</v>
</v>
<v t="ekr.20131119143342.19244"><vh>@shortcuts - vi in Outline pane</vh>
<v t="ekr.20131119143342.19245"><vh>@mode tree-yank-object</vh></v>
<v t="ekr.20131119143342.19246"><vh>@mode tree-change-object</vh></v>
<v t="ekr.20131119143342.19247"><vh>@mode tree-delete-text-object</vh></v>
<v t="ekr.20131119143342.19248"><vh>@mode tree-copy-node</vh></v>
<v t="ekr.20131119143342.19249"><vh>@mode tree-paste-node</vh></v>
<v t="ekr.20131119143342.19250"><vh>@mode tree-delete-node</vh></v>
<v t="ekr.20131119143342.19251"><vh>@mode tree-goto-last-node</vh></v>
<v t="ekr.20131119143342.19252"><vh>@mode tree-goto</vh>
<v t="ekr.20131119143342.19253"><vh>@mode node-goto-first-node</vh></v>
</v>
<v t="ekr.20131119143342.19254"><vh>@mode tree-goto-next-visible</vh></v>
<v t="ekr.20131119143342.19255"><vh>@mode tree-goto-prev-visible</vh></v>
<v t="ekr.20131119143342.19256"><vh>@mode tree-search-forward</vh></v>
<v t="ekr.20131119143342.19257"><vh>@mode tree-replace-string</vh></v>
<v t="ekr.20131119143342.19258"><vh>@mode tree-contract-or-go-left</vh></v>
<v t="ekr.20131119143342.19259"><vh>@mode tree-contract-node</vh></v>
<v t="ekr.20131119143342.19260"><vh>@mode tree-expand-and-go-right</vh></v>
<v t="ekr.20131119143342.19261"><vh>@mode tree-move-outline-up</vh></v>
<v t="ekr.20131119143342.19262"><vh>@mode tree-move-outline-down</vh></v>
<v t="ekr.20131119143342.19263"><vh>@mode tree-move-outline-left</vh></v>
<v t="ekr.20131119143342.19264"><vh>@mode tree-move-outline-right</vh></v>
<v t="ekr.20131119143342.19265"><vh>@mode tree-clone-node</vh></v>
<v t="ekr.20131119143342.19266"><vh>@mode tree-goto-next-clone-node</vh></v>
<v t="ekr.20131119143342.19267"><vh>@mode tree-mark-node</vh></v>
<v t="ekr.20131119143342.19268"><vh>@mode tree-goto-next-marked-node</vh></v>
<v t="ekr.20131119143342.19269"><vh>@mode tree-unmark-all-nodes</vh></v>
<v t="ekr.20131119143342.19270"><vh>Body actions from Tree pane</vh>
<v t="ekr.20131119143342.19271"><vh>@mode tree-goto-next-line</vh></v>
<v t="ekr.20131119143342.19272"><vh>@mode tree-goto-prev-line</vh></v>
</v>
</v>
<v t="ekr.20131119143342.19273"><vh>@shortcuts - vi in Body pane</vh>
<v t="ekr.20131119143342.19274"><vh>@mode body-search-forward</vh></v>
<v t="ekr.20131119143342.19275"><vh>@mode body-search-backward</vh></v>
<v t="ekr.20131119143342.19276"><vh>@mode body-search-everywhere</vh></v>
<v t="ekr.20131119143342.19277"><vh>@mode body-search-options</vh>
<v t="ekr.20131119143342.19278"><vh>@mode body-search-all-nodes</vh></v>
<v t="ekr.20131119143342.19279"><vh>@mode body-search-toggle-headline</vh></v>
<v t="ekr.20131119143342.19280"><vh>@mode body-search-toggle-body</vh></v>
<v t="ekr.20131119143342.19281"><vh>@mode body-search-toggle-mark</vh>
<v t="ekr.20131119143342.19282"><vh>@mode body-search-toggle-mark-finds</vh></v>
<v t="ekr.20131119143342.19283"><vh>@mode body-search-toggle-mark-changes</vh></v>
</v>
<v t="ekr.20131119143342.19284"><vh>@mode body-search-toggle-regex</vh></v>
</v>
<v t="ekr.20131119143342.19285"><vh>@mode body-replace-string</vh></v>
<v t="ekr.20131119143342.19286"><vh>@mode body-paste-then-find</vh></v>
<v t="ekr.20131119143342.19287"><vh>@mode body-goto-end-of-buffer</vh></v>
<v t="ekr.20131119143342.19288"><vh>@mode body-g</vh>
<v t="ekr.20131119143342.19289"><vh>@mode body-g-beginning-of-buffer</vh>
<v t="ekr.20131119143342.19290"><vh>@mode body-g-q</vh></v>
<v t="ekr.20131119143342.19291"><vh>@mode body-g-w</vh>
<v t="ekr.20131119143342.19292"><vh>@mode body-g-wq-a</vh></v>
</v>
</v>
</v>
<v t="ekr.20131119143342.19293"><vh>@mode body-new-line-below</vh></v>
<v t="ekr.20131119143342.19294"><vh>@mode body-new-line-above</vh></v>
<v t="ekr.20131119143342.19295"><vh>@mode body-append</vh></v>
<v t="ekr.20131119143342.19296"><vh>@mode body-insert-at-indent</vh></v>
<v t="ekr.20131119143342.19297"><vh>@mode body-delete-to-end-of-line</vh></v>
<v t="ekr.20131119143342.19298"><vh>@mode body-delete-object</vh>
<v t="ekr.20131119143342.19299"><vh>@mode body-delete-line</vh></v>
<v t="ekr.20131119143342.19300"><vh>@mode body-delete-to-end-of-word</vh></v>
<v t="ekr.20131119143342.19301"><vh>@mode body-delete-to-begin-of-word</vh></v>
<v t="ekr.20131119143342.19302"><vh>@mode body-delete-to-end-of-sentence</vh></v>
<v t="ekr.20131119143342.19303"><vh>@mode body-delete-to-beginning-of-sentence</vh></v>
<v t="ekr.20131119143342.19304"><vh>@mode body-delete-to-end-of-paragraph</vh></v>
<v t="ekr.20131119143342.19305"><vh>@mode body-delete-to-beginning-of-paragraph</vh></v>
<v t="ekr.20131119143342.19306"><vh>@mode body-delete-to-g-object</vh>
<v t="ekr.20131119143342.19307"><vh>@mode body-delete-to-beginning-of-buffer</vh></v>
</v>
<v t="ekr.20131119143342.19308"><vh>@mode body-delete-to-end-of-buffer</vh></v>
<v t="ekr.20131119143342.19309"><vh>@mode body-delete-section</vh></v>
<v t="ekr.20131119143342.19310"><vh>@mode body-delete-to-char</vh></v>
<v t="ekr.20131119143342.19311"><vh>@mode body-delete-selected</vh></v>
</v>
<v t="ekr.20131119143342.19312"><vh>@mode body-yank-to-end-of-line</vh></v>
<v t="ekr.20131119143342.19313"><vh>@mode body-yank-object</vh>
<v t="ekr.20131119143342.19314"><vh>@mode body-yank-line</vh></v>
<v t="ekr.20131119143342.19315"><vh>@mode body-yank-to-beginning-of-next-word</vh></v>
<v t="ekr.20131119143342.19316"><vh>@mode body-yank-to-beginning-of-current-word</vh></v>
<v t="ekr.20131119143342.19317"><vh>@mode body-yank-to-end-of-sentence</vh></v>
<v t="ekr.20131119143342.19318"><vh>@mode body-yank-to-beginning-of-sentence</vh></v>
<v t="ekr.20131119143342.19319"><vh>@mode body-yank-to-end-of-paragraph</vh></v>
<v t="ekr.20131119143342.19320"><vh>@mode body-yank-to-beginning-of-paragraph</vh></v>
<v t="ekr.20131119143342.19321"><vh>@mode body-yank-to-g-object</vh>
<v t="ekr.20131119143342.19322"><vh>@mode body-yank-to-beginning-of-buffer</vh></v>
</v>
<v t="ekr.20131119143342.19323"><vh>@mode body-yank-to-end-of-buffer</vh></v>
<v t="ekr.20131119143342.19324"><vh>@mode body-yank-section</vh></v>
<v t="ekr.20131119143342.19325"><vh>@mode body-yank-selected</vh></v>
</v>
<v t="ekr.20131119143342.19326"><vh>@mode body-change-to-end-of-line</vh></v>
<v t="ekr.20131119143342.19327"><vh>@mode body-change-object</vh>
<v t="ekr.20131119143342.19328"><vh>@mode body-change-line</vh></v>
<v t="ekr.20131119143342.19329"><vh>@mode body-change-to-end-of-word</vh></v>
<v t="ekr.20131119143342.19330"><vh>@mode body-change-to-beginning-of-word</vh></v>
<v t="ekr.20131119143342.19331"><vh>@mode body-change-to-end-of-sentence</vh></v>
<v t="ekr.20131119143342.19332"><vh>@mode body-change-to-beginning-of-sentence</vh></v>
<v t="ekr.20131119143342.19333"><vh>@mode body-change-to-end-of-paragraph</vh></v>
<v t="ekr.20131119143342.19334"><vh>@mode body-change-to-beginning-of-paragraph</vh></v>
<v t="ekr.20131119143342.19335"><vh>@mode body-change-to-g-object</vh>
<v t="ekr.20131119143342.19336"><vh>@mode body-change-to-beginning-of-buffer</vh></v>
</v>
<v t="ekr.20131119143342.19337"><vh>@mode body-change-to-end-of-buffer</vh></v>
<v t="ekr.20131119143342.19338"><vh>@mode body-change-section</vh></v>
<v t="ekr.20131119143342.19339"><vh>@mode body-change-selected</vh></v>
</v>
<v t="ekr.20131119143342.19340"><vh>@mode body-substitute-char</vh></v>
<v t="ekr.20131119143342.19341"><vh>@mode body-substitute-line</vh></v>
<v t="ekr.20131119143342.19342"><vh>@mode body-indent</vh>
<v t="ekr.20131119143342.19343"><vh>@mode body-indent-line</vh></v>
<v t="ekr.20131119143342.19344"><vh>@mode body-indent-to-end-of-sentence</vh></v>
<v t="ekr.20131119143342.19345"><vh>@mode body-indent-to-beginning-of-sentence</vh></v>
<v t="ekr.20131119143342.19346"><vh>@mode body-indent-to-end-of-paragraph</vh></v>
<v t="ekr.20131119143342.19347"><vh>@mode body-indent-to-beginning-of-paragraph</vh></v>
<v t="ekr.20131119143342.19348"><vh>@mode body-indent-to-beginning-of-buffer</vh></v>
<v t="ekr.20131119143342.19349"><vh>@mode body-indent-to-end-of-buffer</vh></v>
</v>
<v t="ekr.20131119143342.19350"><vh>@mode body-unindent</vh>
<v t="ekr.20131119143342.19351"><vh>@mode body-unindent-less</vh></v>
<v t="ekr.20131119143342.19352"><vh>@mode body-unindent-to-end-of-paragraph</vh></v>
<v t="ekr.20131119143342.19353"><vh>@mode body-unindent-to-beginning-of-paragraph</vh></v>
<v t="ekr.20131119143342.19354"><vh>@mode body-unindent-to-end-of-sentence</vh></v>
<v t="ekr.20131119143342.19355"><vh>@mode body-unindent-to-beginning-of-sentence</vh></v>
<v t="ekr.20131119143342.19356"><vh>@mode body-unindent-to-end-of-buffer</vh></v>
<v t="ekr.20131119143342.19357"><vh>@mode body-unindent-to-beginning-of-buffer</vh></v>
</v>
<v t="ekr.20131119143342.19358"><vh>@mode body-goto-indent-previous-line</vh></v>
<v t="ekr.20131119143342.19359"><vh>@mode body-goto-after-paragraph</vh></v>
<v t="ekr.20131119143342.19360"><vh>@mode body-goto-before-paragraph</vh></v>
<v t="ekr.20131119143342.19361"><vh>@mode body-join</vh></v>
<v t="ekr.20131119143342.19362"><vh>@mode body-match</vh></v>
<v t="ekr.20131119143342.19363"><vh>Tree actions from Body pane</vh>
<v t="ekr.20131119143342.19364"><vh>@mode body-goto-next-visible</vh></v>
<v t="ekr.20131119143342.19365"><vh>@mode body-goto-prev-visible</vh></v>
<v t="ekr.20131119143342.19366"><vh>@mode body-expand-and-go-right</vh></v>
<v t="ekr.20131119143342.19367"><vh>@mode body-contract-or-go-left</vh></v>
</v>
<v t="ekr.20131119143342.19368"><vh>@mode vim-window-commands</vh></v>
</v>
</v>
</v>
<v t="ekr.20131119143342.18544"><vh>Example style sheets</vh>
<v t="ekr.20131119143342.18545"><vh>From leo/config/leo10pt.leo</vh>
<v t="ekr.20131119143342.18546"><vh>@data qt-gui-plugin-style-sheet</vh></v>
</v>
<v t="ekr.20131119143342.18547"><vh>From leo/config/leo12-10pt.leo</vh>
<v t="ekr.20131119143342.18548"><vh>@data qt-gui-plugin-style-sheet</vh></v>
</v>
<v t="ekr.20131119143342.18549"><vh>From leo/config/leo12pt.leo</vh>
<v t="ekr.20131119143342.18550"><vh>@data qt-gui-plugin-style-sheet</vh></v>
</v>
<v t="ekr.20131119143342.18551"><vh>From leo/config/leo14-12pt.leo</vh>
<v t="ekr.20131119143342.18552"><vh>@data qt-gui-plugin-style-sheet</vh></v>
</v>
<v t="ekr.20131119143342.18553"><vh>From leo/config/leo14pt.leo</vh>
<v t="ekr.20131119143342.18554"><vh>@data qt-gui-plugin-style-sheet</vh></v>
</v>
<v t="ekr.20131119143342.18555"><vh>From leo/config/leo14pt-ekr.leo</vh>
<v t="ekr.20131119143342.18556"><vh>@data qt-gui-plugin-style-sheet</vh></v>
</v>
</v>
<v t="ekr.20131119143342.18955"><vh>Solorized colors</vh>
<v t="ekr.20131119143342.18936"><vh>Solarized colors (Reference)</vh></v>
<v t="ekr.20131119143342.18937"><vh>Default colors, used if no language-specific color are in effect</vh>
<v t="ekr.20131119143342.18938"><vh>@color blank_color = grey</vh></v>
<v t="ekr.20131119143342.18939"><vh>@color tab_color = black</vh></v>
<v t="ekr.20131119143342.18940"><vh>@color label_color = red</vh></v>
<v t="ekr.20131119143342.18941"><vh>@color keyword1_color = #268bd2</vh></v>
<v t="ekr.20131119143342.18942"><vh>@color keyword2_color = #268bd2</vh></v>
<v t="ekr.20131119143342.18943"><vh>@color keyword3_color = #268bd2</vh></v>
<v t="ekr.20131119143342.18944"><vh>@color keyword4_color = #268bd2</vh></v>
<v t="ekr.20131119143342.18945"><vh>@color literal1_color = #859900</vh></v>
<v t="ekr.20131119143342.18946"><vh>@color literal2_color = #859900</vh></v>
<v t="ekr.20131119143342.18947"><vh>@color literal3_color = #859900</vh></v>
<v t="ekr.20131119143342.18948"><vh>@color literal4_color = #859900</vh></v>
<v t="ekr.20131119143342.18949"><vh>@color markup_color = blue</vh></v>
<v t="ekr.20131119143342.18950"><vh>@color comment1_color = #d33682</vh></v>
<v t="ekr.20131119143342.18951"><vh>@color comment2_color = #d33682</vh></v>
<v t="ekr.20131119143342.18952"><vh>@color comment3_color = #d33682</vh></v>
<v t="ekr.20131119143342.18953"><vh>@color comment4_color = #d33682</vh></v>
<v t="ekr.20131119143342.18954"><vh>@color operator_color = None</vh></v>
</v>
</v>
</vnodes>
<tnodes>
<t tx="ekr.20131119143342.18530">@language rest

This file contains example settings of various kinds.

None of the setting in this file is active because
they are not part of the @settings tree.</t>
<t tx="ekr.20131119143342.18544">@language rest

These determine Leo's look and feel.
To enable one of these:

1. Change @@ to @ in the headline.
2. Replace the present @data qt-gui-plugin-style-sheet.
</t>
<t tx="ekr.20131119143342.18545"></t>
<t tx="ekr.20131119143342.18546">/* Disable this to continually test leoSettings.leo */

/* From leo10pt.leo */

/* Documentation of Qt stylesheets at http://doc.trolltech.com/4.2/stylesheet.html */

/* constants - *parsed from this comment*

   needed for zoom in / out
   
   @font-size-body = 10pt
   
   *color names*
   @MistyRose1 = #FFE4E1
   @LightSteelBlue1 = #CAE1FF
   @LightBlue = #ADD8E6

   Buttons may be styled by name:
      QPushButton#&lt;button text&gt;-button { &lt;style&gt; }
   or by kind:
      QPushButton[button_kind="&lt;button kind&gt;"] { &lt;style&gt; }
   Button kinds are:
   'run-script' (the singleton run-script button),
   'debug-script',
   'script-button-button' (the singleton script-button button), 
   'script-button' (buttons created by the script-button button),
   'generic-button' (default), 
   'quick-move' from the quickMove plugin,
   'interact' from the interact plugin,
   'at-button' (created from @button nodes)
   Search 'button_kind' below for button styling examples.
   
   *button background colors*
   @run-script-btn-bg = @MistyRose1
   @debug-script-btn-bg = @MistyRose1
   @script-button-button-btn-bg = #ffffcc
   @script-button-btn-bg = @MistyRose1
   @generic-button-btn-bg = @LightSteelBlue1
   @quick-move-btn-bg = @LightSteelBlue1
   @interact-btn-bg = @LightBlue
   @at-button-btn-bg = @LightSteelBlue1
       
*/

/* Valid color names: http://www.w3.org/TR/SVG/types.html#ColorKeywords */

/*
    Important: this stylesheets is responsible for most, but *not* all, of Leos appearance.
    See also settings in "Colorizer and colors" 
*/

QScrollArea {
    background-color: white;
}

/* Components of the Find Tab */

QWidget#findTab {
    background-color: white;
}

QLabel#findHeading {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#changeLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findHelp {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findPattern {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findChange {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* A QWidget: supports only background attributes.*/

QSplitter::handle {
    background-color: #CAE1FF; /* lightSteelBlue1 */
}

QStackedWidget {
    /* background-color:lightpink; */
    border-color: red;
    padding: 0px;
    /* border-width: 0px; */
    /* background-color: yellow; */
}

QSplitter {
    border-color: white;
    background-color: white;
    border-style: solid;
}

QTreeWidget {
    /* These apply to the selected item, but not to editing items.*/
    background-color: #ffffec; /* Leo's traditional tree color */
    selection-color: black; /* was white */
    selection-background-color: lightgrey;
    /* font-family: SansSerif; */
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
    show-decoration-selected: 1 /* 1: select entire row */
 }

/* Headline edit widgets */
QTreeWidget QLineEdit {
    background-color: cornsilk;
    selection-color: white;
    selection-background-color: blue;
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The log panes */
QTextEdit {
    background-color: white; /* #f2fdff; */
    selection-color: white;
    selection-background-color: blue;
    /* font-family: Courier New; */
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The body pane */
QTextEdit#richTextEdit {
    background-color: white; /* #fdf5f5; A kind of pink. */
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    /* font-family: Courier New; */
    font-size: @font-size-body;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* Editor labels */
QLineEdit#editorLabel {
    background-color: #ffffec;
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
    border: 2px;
    margin: 2px;
}

/* The text "Minibuffer" in the minibuffer aread.

Do not overide QLabel directly.  It is used for dialog text.
*/

QLabel#minibufferLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal;
    font-style: normal;
}

/* 
QLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal;
    font-style: normal;
    border: 2px;
    margin: 2px;
}
*/


/* The mini-buffer

**Important**: Because Leo changes the color of the minibuffer dynamically,
stylesheets can not be used. Instead, set the desired colors using one of the
following settings, with defaults as shown::

    @color minibuffer-background-color = lightblue
    @color minibuffer-error-color = red
    @color minibuffer-foreground-color = black
    @color minibuffer-warning-color = lightgrey
*/
QLineEdit#lineEdit {
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#status1 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 10pt;
}

QLineEdit#status2 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 10pt;
}

/* button_kind based button coloring */
QPushButton[button_kind="run-script"] { 
    background-color: @run-script-btn-bg; }
QPushButton[button_kind="debug-script"] { 
    background-color: @debug-script-btn-bg; }
QPushButton[button_kind="generic-button"] { 
    background-color: @generic-button-btn-bg; }
QPushButton[button_kind="quick-move"] { 
    background-color: @quick-move-btn-bg; }
QPushButton[button_kind="interact"] { 
    background-color: @interact-btn-bg; }
QPushButton[button_kind="at-button"] { 
    background-color: @at-button-btn-bg; }
QPushButton[button_kind="script-button"] { 
    background-color: @script-button-btn-bg; }
/* example of name based button coloring.  Coincidentally, the
   name and button_kind of this button are the same */
QPushButton#script-button-button { 
    background-color: @script-button-button-btn-bg; }

QPlainTextEdit#screencastcaption {
    background-color: yellow;
    font-family: DejaVu Sans Mono; /* Times New Roman; */
    font-size: 18pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* focused pane border highlight */
QTextEdit#log-widget, LeoQTreeWidget#treeWidget, QTextEdit#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-unfocus-color; 
}
QTextEdit:focus#log-widget, LeoQTreeWidget:focus#treeWidget, QTextEdit:focus#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-focus-color; 
}
</t>
<t tx="ekr.20131119143342.18547">These seem like the best out-of-the-box 
settings for Leo.</t>
<t tx="ekr.20131119143342.18548">/* Disable this to continually test leoSettings.leo */

/* From leo12-10pt.leo */

/* Documentation of Qt stylesheets at http://doc.trolltech.com/4.2/stylesheet.html */

/* constants - *parsed from this comment*

   needed for zoom in / out
   
   @font-size-body = 12pt
   
   *color names*
   @MistyRose1 = #FFE4E1
   @LightSteelBlue1 = #CAE1FF
   @LightBlue = #ADD8E6

   Buttons may be styled by name:
      QPushButton#&lt;button text&gt;-button { &lt;style&gt; }
   or by kind:
      QPushButton[button_kind="&lt;button kind&gt;"] { &lt;style&gt; }
   Button kinds are:
   'run-script' (the singleton run-script button),
   'debug-script',
   'script-button-button' (the singleton script-button button), 
   'script-button' (buttons created by the script-button button),
   'generic-button' (default), 
   'quick-move' from the quickMove plugin,
   'interact' from the interact plugin,
   'at-button' (created from @button nodes)
   Search 'button_kind' below for button styling examples.
   
   *button background colors*
   @run-script-btn-bg = @MistyRose1
   @debug-script-btn-bg = @MistyRose1
   @script-button-button-btn-bg = #ffffcc
   @script-button-btn-bg = @MistyRose1
   @generic-button-btn-bg = @LightSteelBlue1
   @quick-move-btn-bg = @LightSteelBlue1
   @interact-btn-bg = @LightBlue
   @at-button-btn-bg = @LightSteelBlue1
       
*/

/* Valid color names: http://www.w3.org/TR/SVG/types.html#ColorKeywords */

/*
    Important: this stylesheets is responsible for most, but *not* all, of Leos appearance.
    See also settings in "Colorizer and colors" 
*/

QScrollArea {
    background-color: white;
}

/* Components of the Find Tab */

QWidget#findTab {
    background-color: white;
}

QLabel#findHeading {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#changeLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findHelp {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findPattern {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findChange {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* A QWidget: supports only background attributes.*/

QSplitter::handle {
    background-color: #CAE1FF; /* lightSteelBlue1 */
}

QStackedWidget {
    /* background-color:lightpink; */
    border-color: red;
    padding: 0px;
    /* border-width: 0px; */
    /* background-color: yellow; */
}

QSplitter {
    border-color: white;
    background-color: white;
    border-style: solid;
}

QTreeWidget {
    /* These apply to the selected item, but not to editing items.*/
    background-color: #ffffec; /* Leo's traditional tree color */
    selection-color: black; /* was white */
    selection-background-color: lightgrey;
    /* font-family: SansSerif; */
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
    show-decoration-selected: 1 /* 1: select entire row */
 }

/* Headline edit widgets */
QTreeWidget QLineEdit {
    background-color: cornsilk;
    selection-color: white;
    selection-background-color: blue;
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The log panes */
QTextEdit {
    background-color: white; /* #f2fdff; */
    selection-color: white;
    selection-background-color: blue;
    /* font-family: Courier New; */
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The body pane */
QTextEdit#richTextEdit {
    background-color: white; /* #fdf5f5; A kind of pink. */
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    /* font-family: Courier New; */
    font-size: @font-size-body;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* Editor labels */
QLineEdit#editorLabel {
    background-color: #ffffec;
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
    border: 2px;
    margin: 2px;
}

/* The text "Minibuffer" in the minibuffer aread.

Do not overide QLabel directly.  It is used for dialog text.
*/

QLabel#minibufferLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal;
    font-style: normal;
}

/* 
QLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal;
    font-style: normal;
    border: 2px;
    margin: 2px;
}
*/


/* The mini-buffer

**Important**: Because Leo changes the color of the minibuffer dynamically,
stylesheets can not be used. Instead, set the desired colors using one of the
following settings, with defaults as shown::

    @color minibuffer-background-color = lightblue
    @color minibuffer-error-color = red
    @color minibuffer-foreground-color = black
    @color minibuffer-warning-color = lightgrey
*/
QLineEdit#lineEdit {
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#status1 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 10pt;
}

QLineEdit#status2 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 10pt;
}

/* button_kind based button coloring */
QPushButton[button_kind="run-script"] { 
    background-color: @run-script-btn-bg; }
QPushButton[button_kind="debug-script"] { 
    background-color: @debug-script-btn-bg; }
QPushButton[button_kind="generic-button"] { 
    background-color: @generic-button-btn-bg; }
QPushButton[button_kind="quick-move"] { 
    background-color: @quick-move-btn-bg; }
QPushButton[button_kind="interact"] { 
    background-color: @interact-btn-bg; }
QPushButton[button_kind="at-button"] { 
    background-color: @at-button-btn-bg; }
QPushButton[button_kind="script-button"] { 
    background-color: @script-button-btn-bg; }
/* example of name based button coloring.  Coincidentally, the
   name and button_kind of this button are the same */
QPushButton#script-button-button { 
    background-color: @script-button-button-btn-bg; }

QPlainTextEdit#screencastcaption {
    background-color: yellow;
    font-family: DejaVu Sans Mono; /* Times New Roman; */
    font-size: 18pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* focused pane border highlight */
QTextEdit#log-widget, LeoQTreeWidget#treeWidget, QTextEdit#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-unfocus-color; 
}
QTextEdit:focus#log-widget, LeoQTreeWidget:focus#treeWidget, QTextEdit:focus#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-focus-color; 
}
</t>
<t tx="ekr.20131119143342.18549"></t>
<t tx="ekr.20131119143342.18550">/* Disable this to continually test leoSettings.leo */

/* From leo12pt.leo */

/* Documentation of Qt stylesheets at http://doc.trolltech.com/4.2/stylesheet.html */

/* constants - *parsed from this comment*

   needed for zoom in / out
   
   @font-size-body = 12pt
   
   *color names*
   @MistyRose1 = #FFE4E1
   @LightSteelBlue1 = #CAE1FF
   @LightBlue = #ADD8E6

   Buttons may be styled by name:
      QPushButton#&lt;button text&gt;-button { &lt;style&gt; }
   or by kind:
      QPushButton[button_kind="&lt;button kind&gt;"] { &lt;style&gt; }
   Button kinds are:
   'run-script' (the singleton run-script button),
   'debug-script',
   'script-button-button' (the singleton script-button button), 
   'script-button' (buttons created by the script-button button),
   'generic-button' (default), 
   'quick-move' from the quickMove plugin,
   'interact' from the interact plugin,
   'at-button' (created from @button nodes)
   Search 'button_kind' below for button styling examples.
   
   *button background colors*
   @run-script-btn-bg = @MistyRose1
   @debug-script-btn-bg = @MistyRose1
   @script-button-button-btn-bg = #ffffcc
   @script-button-btn-bg = @MistyRose1
   @generic-button-btn-bg = @LightSteelBlue1
   @quick-move-btn-bg = @LightSteelBlue1
   @interact-btn-bg = @LightBlue
   @at-button-btn-bg = @LightSteelBlue1
       
*/

/* Valid color names: http://www.w3.org/TR/SVG/types.html#ColorKeywords */

/*
    Important: this stylesheets is responsible for most, but *not* all, of Leos appearance.
    See also settings in "Colorizer and colors" 
*/

QScrollArea {
    background-color: white;
}

/* Components of the Find Tab */

QWidget#findTab {
    background-color: white;
}

QLabel#findHeading {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#changeLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findHelp {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findPattern {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findChange {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* A QWidget: supports only background attributes.*/

QSplitter::handle {
    background-color: #CAE1FF; /* lightSteelBlue1 */
}

QStackedWidget {
    /* background-color:lightpink; */
    border-color: red;
    padding: 0px;
    /* border-width: 0px; */
    /* background-color: yellow; */
}

QSplitter {
    border-color: white;
    background-color: white;
    border-style: solid;
}

QTreeWidget {
    /* These apply to the selected item, but not to editing items.*/
    background-color: #ffffec; /* Leo's traditional tree color */
    selection-color: black; /* was white */
    selection-background-color: lightgrey;
    /* font-family: SansSerif; */
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
    show-decoration-selected: 1 /* 1: select entire row */
 }

/* Headline edit widgets */
QTreeWidget QLineEdit {
    background-color: cornsilk;
    selection-color: white;
    selection-background-color: blue;
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The log panes */
QTextEdit {
    background-color: white; /* #f2fdff; */
    selection-color: white;
    selection-background-color: blue;
    /* font-family: Courier New; */
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The body pane */
QTextEdit#richTextEdit {
    background-color: white; /* #fdf5f5; A kind of pink. */
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    /* font-family: Courier New; */
    font-size: @font-size-body;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* Editor labels */
QLineEdit#editorLabel {
    background-color: #ffffec;
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
    border: 2px;
    margin: 2px;
}

/* The text "Minibuffer" in the minibuffer aread.

Do not overide QLabel directly.  It is used for dialog text.
*/

QLabel#minibufferLabel {
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal;
    font-style: normal;
}

/* 
QLabel {
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal;
    font-style: normal;
    border: 2px;
    margin: 2px;
}
*/


/* The mini-buffer

**Important**: Because Leo changes the color of the minibuffer dynamically,
stylesheets can not be used. Instead, set the desired colors using one of the
following settings, with defaults as shown::

    @color minibuffer-background-color = lightblue
    @color minibuffer-error-color = red
    @color minibuffer-foreground-color = black
    @color minibuffer-warning-color = lightgrey
*/
QLineEdit#lineEdit {
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#status1 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 12pt;
}

QLineEdit#status2 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 12pt;
}

/* button_kind based button coloring */
QPushButton[button_kind="run-script"] { 
    background-color: @run-script-btn-bg; }
QPushButton[button_kind="debug-script"] { 
    background-color: @debug-script-btn-bg; }
QPushButton[button_kind="generic-button"] { 
    background-color: @generic-button-btn-bg; }
QPushButton[button_kind="quick-move"] { 
    background-color: @quick-move-btn-bg; }
QPushButton[button_kind="interact"] { 
    background-color: @interact-btn-bg; }
QPushButton[button_kind="at-button"] { 
    background-color: @at-button-btn-bg; }
QPushButton[button_kind="script-button"] { 
    background-color: @script-button-btn-bg; }
/* example of name based button coloring.  Coincidentally, the
   name and button_kind of this button are the same */
QPushButton#script-button-button { 
    background-color: @script-button-button-btn-bg; }

QPlainTextEdit#screencastcaption {
    background-color: yellow;
    font-family: DejaVu Sans Mono; /* Times New Roman; */
    font-size: 18pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* focused pane border highlight */
QTextEdit#log-widget, LeoQTreeWidget#treeWidget, QTextEdit#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-unfocus-color; 
}
QTextEdit:focus#log-widget, LeoQTreeWidget:focus#treeWidget, QTextEdit:focus#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-focus-color; 
}
</t>
<t tx="ekr.20131119143342.18551"></t>
<t tx="ekr.20131119143342.18552">/* Disable this to continually test leoSettings.leo */

/* From leo14-12pt.leo */

/* Documentation of Qt stylesheets at http://doc.trolltech.com/4.2/stylesheet.html */

/* constants - *parsed from this comment*

   needed for zoom in / out
   
   @font-size-body = 14pt
   
   *color names*
   @MistyRose1 = #FFE4E1
   @LightSteelBlue1 = #CAE1FF
   @LightBlue = #ADD8E6

   Buttons may be styled by name:
      QPushButton#&lt;button text&gt;-button { &lt;style&gt; }
   or by kind:
      QPushButton[button_kind="&lt;button kind&gt;"] { &lt;style&gt; }
   Button kinds are:
   'run-script' (the singleton run-script button),
   'debug-script',
   'script-button-button' (the singleton script-button button), 
   'script-button' (buttons created by the script-button button),
   'generic-button' (default), 
   'quick-move' from the quickMove plugin,
   'interact' from the interact plugin,
   'at-button' (created from @button nodes)
   Search 'button_kind' below for button styling examples.
   
   *button background colors*
   @run-script-btn-bg = @MistyRose1
   @debug-script-btn-bg = @MistyRose1
   @script-button-button-btn-bg = #ffffcc
   @script-button-btn-bg = @MistyRose1
   @generic-button-btn-bg = @LightSteelBlue1
   @quick-move-btn-bg = @LightSteelBlue1
   @interact-btn-bg = @LightBlue
   @at-button-btn-bg = @LightSteelBlue1
       
*/

/* Valid color names: http://www.w3.org/TR/SVG/types.html#ColorKeywords */

/*
    Important: this stylesheets is responsible for most, but *not* all, of Leos appearance.
    See also settings in "Colorizer and colors" 
*/

QScrollArea {
    background-color: white;
}

/* Components of the Find Tab */

QWidget#findTab {
    background-color: white;
}

QLabel#findHeading {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#changeLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findHelp {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findPattern {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findChange {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* A QWidget: supports only background attributes.*/

QSplitter::handle {
    background-color: #CAE1FF; /* lightSteelBlue1 */
}

QStackedWidget {
    /* background-color:lightpink; */
    border-color: red;
    padding: 0px;
    /* border-width: 0px; */
    /* background-color: yellow; */
}

QSplitter {
    border-color: white;
    background-color: white;
    border-style: solid;
}

QTreeWidget {
    /* These apply to the selected item, but not to editing items.*/
    background-color: #ffffec; /* Leo's traditional tree color */
    selection-color: black; /* was white */
    selection-background-color: lightgrey;
    /* font-family: SansSerif; */
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
    show-decoration-selected: 1 /* 1: select entire row */
 }

/* Headline edit widgets */
QTreeWidget QLineEdit {
    background-color: cornsilk;
    selection-color: white;
    selection-background-color: blue;
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The log panes */
QTextEdit {
    background-color: white; /* #f2fdff; */
    selection-color: white;
    selection-background-color: blue;
    /* font-family: Courier New; */
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The body pane */
QTextEdit#richTextEdit {
    background-color: white; /* #fdf5f5; A kind of pink. */
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    /* font-family: Courier New; */
    font-size: @font-size-body;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* Editor labels */
QLineEdit#editorLabel {
    background-color: #ffffec;
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
    border: 2px;
    margin: 2px;
}

/* The text "Minibuffer" in the minibuffer aread.

Do not overide QLabel directly.  It is used for dialog text.
*/

QLabel#minibufferLabel {
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal;
    font-style: normal;
}

/* 
QLabel {
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal;
    font-style: normal;
    border: 2px;
    margin: 2px;
}
*/


/* The mini-buffer

**Important**: Because Leo changes the color of the minibuffer dynamically,
stylesheets can not be used. Instead, set the desired colors using one of the
following settings, with defaults as shown::

    @color minibuffer-background-color = lightblue
    @color minibuffer-error-color = red
    @color minibuffer-foreground-color = black
    @color minibuffer-warning-color = lightgrey
*/
QLineEdit#lineEdit {
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#status1 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 12pt;
}

QLineEdit#status2 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 12pt;
}

/* button_kind based button coloring */
QPushButton[button_kind="run-script"] { 
    background-color: @run-script-btn-bg; }
QPushButton[button_kind="debug-script"] { 
    background-color: @debug-script-btn-bg; }
QPushButton[button_kind="generic-button"] { 
    background-color: @generic-button-btn-bg; }
QPushButton[button_kind="quick-move"] { 
    background-color: @quick-move-btn-bg; }
QPushButton[button_kind="interact"] { 
    background-color: @interact-btn-bg; }
QPushButton[button_kind="at-button"] { 
    background-color: @at-button-btn-bg; }
QPushButton[button_kind="script-button"] { 
    background-color: @script-button-btn-bg; }
/* example of name based button coloring.  Coincidentally, the
   name and button_kind of this button are the same */
QPushButton#script-button-button { 
    background-color: @script-button-button-btn-bg; }

QPlainTextEdit#screencastcaption {
    background-color: yellow;
    font-family: DejaVu Sans Mono; /* Times New Roman; */
    font-size: 18pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* focused pane border highlight */
QTextEdit#log-widget, LeoQTreeWidget#treeWidget, QTextEdit#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-unfocus-color; 
}
QTextEdit:focus#log-widget, LeoQTreeWidget:focus#treeWidget, QTextEdit:focus#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-focus-color; 
}
</t>
<t tx="ekr.20131119143342.18553"></t>
<t tx="ekr.20131119143342.18554">/* Disable this to continually test leoSettings.leo */

/* From leo14pt.leo */

/* Documentation of Qt stylesheets at http://doc.trolltech.com/4.2/stylesheet.html */

/* constants - *parsed from this comment*

   needed for zoom in / out
   
   @font-size-body = 14pt
   
   *color names*
   @MistyRose1 = #FFE4E1
   @LightSteelBlue1 = #CAE1FF
   @LightBlue = #ADD8E6

   Buttons may be styled by name:
      QPushButton#&lt;button text&gt;-button { &lt;style&gt; }
   or by kind:
      QPushButton[button_kind="&lt;button kind&gt;"] { &lt;style&gt; }
   Button kinds are:
   'run-script' (the singleton run-script button),
   'debug-script',
   'script-button-button' (the singleton script-button button), 
   'script-button' (buttons created by the script-button button),
   'generic-button' (default), 
   'quick-move' from the quickMove plugin,
   'interact' from the interact plugin,
   'at-button' (created from @button nodes)
   Search 'button_kind' below for button styling examples.
   
   *button background colors*
   @run-script-btn-bg = @MistyRose1
   @debug-script-btn-bg = @MistyRose1
   @script-button-button-btn-bg = #ffffcc
   @script-button-btn-bg = @MistyRose1
   @generic-button-btn-bg = @LightSteelBlue1
   @quick-move-btn-bg = @LightSteelBlue1
   @interact-btn-bg = @LightBlue
   @at-button-btn-bg = @LightSteelBlue1
       
*/

/* Valid color names: http://www.w3.org/TR/SVG/types.html#ColorKeywords */

/*
    Important: this stylesheets is responsible for most, but *not* all, of Leos appearance.
    See also settings in "Colorizer and colors" 
*/

QScrollArea {
    background-color: white;
}

/* Components of the Find Tab */

QWidget#findTab {
    background-color: white;
}

QLabel#findHeading {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#changeLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findHelp {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findPattern {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findChange {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* A QWidget: supports only background attributes.*/

QSplitter::handle {
    background-color: #CAE1FF; /* lightSteelBlue1 */
}

QStackedWidget {
    /* background-color:lightpink; */
    border-color: red;
    padding: 0px;
    /* border-width: 0px; */
    /* background-color: yellow; */
}

QSplitter {
    border-color: white;
    background-color: white;
    border-style: solid;
}

QTreeWidget {
    /* These apply to the selected item, but not to editing items.*/
    background-color: #ffffec; /* Leo's traditional tree color */
    selection-color: black; /* was white */
    selection-background-color: lightgrey;
    /* font-family: SansSerif; */
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
    show-decoration-selected: 1 /* 1: select entire row */
 }

/* Headline edit widgets */
QTreeWidget QLineEdit {
    background-color: cornsilk;
    selection-color: white;
    selection-background-color: blue;
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The log panes */
QTextEdit {
    background-color: white; /* #f2fdff; */
    selection-color: white;
    selection-background-color: blue;
    /* font-family: Courier New; */
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The body pane */
QTextEdit#richTextEdit {
    background-color: white; /* #fdf5f5; A kind of pink. */
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    /* font-family: Courier New; */
    font-size: @font-size-body;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* Editor labels */
QLineEdit#editorLabel {
    background-color: #ffffec;
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
    border: 2px;
    margin: 2px;
}

/* The text "Minibuffer" in the minibuffer aread.

Do not overide QLabel directly.  It is used for dialog text.
*/

QLabel#minibufferLabel {
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal;
    font-style: normal;
}

/* 
QLabel {
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal;
    font-style: normal;
    border: 2px;
    margin: 2px;
}
*/


/* The mini-buffer

**Important**: Because Leo changes the color of the minibuffer dynamically,
stylesheets can not be used. Instead, set the desired colors using one of the
following settings, with defaults as shown::

    @color minibuffer-background-color = lightblue
    @color minibuffer-error-color = red
    @color minibuffer-foreground-color = black
    @color minibuffer-warning-color = lightgrey
*/
QLineEdit#lineEdit {
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#status1 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 14pt;
}

QLineEdit#status2 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 14pt;
}

/* button_kind based button coloring */
QPushButton[button_kind="run-script"] { 
    background-color: @run-script-btn-bg; }
QPushButton[button_kind="debug-script"] { 
    background-color: @debug-script-btn-bg; }
QPushButton[button_kind="generic-button"] { 
    background-color: @generic-button-btn-bg; }
QPushButton[button_kind="quick-move"] { 
    background-color: @quick-move-btn-bg; }
QPushButton[button_kind="interact"] { 
    background-color: @interact-btn-bg; }
QPushButton[button_kind="at-button"] { 
    background-color: @at-button-btn-bg; }
QPushButton[button_kind="script-button"] { 
    background-color: @script-button-btn-bg; }
/* example of name based button coloring.  Coincidentally, the
   name and button_kind of this button are the same */
QPushButton#script-button-button { 
    background-color: @script-button-button-btn-bg; }

QPlainTextEdit#screencastcaption {
    background-color: yellow;
    font-family: DejaVu Sans Mono; /* Times New Roman; */
    font-size: 18pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* focused pane border highlight */
QTextEdit#log-widget, LeoQTreeWidget#treeWidget, QTextEdit#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-unfocus-color; 
}
QTextEdit:focus#log-widget, LeoQTreeWidget:focus#treeWidget, QTextEdit:focus#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-focus-color; 
}
</t>
<t tx="ekr.20131119143342.18555">These are the settings I use.</t>
<t tx="ekr.20131119143342.18556">/* Disable this to continually test leoSettings.leo */

/* From leo14pt-ekr.leo */

/* Documentation of Qt stylesheets at http://doc.trolltech.com/4.2/stylesheet.html */

/* constants - *parsed from this comment*

   needed for zoom in / out
   
   @font-size-body = 14pt
   
   *color names*
   @MistyRose1 = #FFE4E1
   @LightSteelBlue1 = #CAE1FF
   @LightBlue = #ADD8E6

   Buttons may be styled by name:
      QPushButton#&lt;button text&gt;-button { &lt;style&gt; }
   or by kind:
      QPushButton[button_kind="&lt;button kind&gt;"] { &lt;style&gt; }
   Button kinds are:
   'run-script' (the singleton run-script button),
   'debug-script',
   'script-button-button' (the singleton script-button button), 
   'script-button' (buttons created by the script-button button),
   'generic-button' (default), 
   'quick-move' from the quickMove plugin,
   'interact' from the interact plugin,
   'at-button' (created from @button nodes)
   Search 'button_kind' below for button styling examples.
   
   *button background colors*
   @run-script-btn-bg = @MistyRose1
   @debug-script-btn-bg = @MistyRose1
   @script-button-button-btn-bg = #ffffcc
   @script-button-btn-bg = @MistyRose1
   @generic-button-btn-bg = @LightSteelBlue1
   @quick-move-btn-bg = @LightSteelBlue1
   @interact-btn-bg = @LightBlue
   @at-button-btn-bg = @LightSteelBlue1
       
*/

/* Valid color names: http://www.w3.org/TR/SVG/types.html#ColorKeywords */

/*
    Important: this stylesheets is responsible for most, but *not* all, of Leos appearance.
    See also settings in "Colorizer and colors" 
*/

QScrollArea {
    background-color: white;
}

/* Components of the Find Tab */

QWidget#findTab {
    background-color: white;
}

QLabel#findHeading {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#changeLabel {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLabel#findHelp {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findPattern {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#findChange {
    font-family: DejaVu Sans Mono;
    font-size: 10pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* A QWidget: supports only background attributes.*/

QSplitter::handle {
    background-color: #CAE1FF; /* lightSteelBlue1 */
}

QStackedWidget {
    /* background-color:lightpink; */
    border-color: red;
    padding: 0px;
    /* border-width: 0px; */
    /* background-color: yellow; */
}

QSplitter {
    border-color: white;
    background-color: white;
    border-style: solid;
}

QTreeWidget {
    /* These apply to the selected item, but not to editing items.*/
    background-color: #ffffec; /* Leo's traditional tree color */
    selection-color: black; /* was white */
    selection-background-color: lightgrey;
    /* font-family: SansSerif; */
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
    show-decoration-selected: 1 /* 1: select entire row */
 }

/* Headline edit widgets */
QTreeWidget QLineEdit {
    background-color: cornsilk;
    selection-color: white;
    selection-background-color: blue;
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The log panes */
QTextEdit {
    background-color: white; /* #f2fdff; */
    selection-color: white;
    selection-background-color: blue;
    /* font-family: Courier New; */
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal, italic,oblique */
}

/* The body pane */
QTextEdit#richTextEdit {
    background-color: white; /* #fdf5f5; A kind of pink. */
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    /* font-family: Courier New; */
    font-size: @font-size-body;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* Editor labels */
QLineEdit#editorLabel {
    background-color: #ffffec;
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
    border: 2px;
    margin: 2px;
}

/* The text "Minibuffer" in the minibuffer aread.

Do not overide QLabel directly.  It is used for dialog text.
*/

QLabel#minibufferLabel {
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal;
    font-style: normal;
}

/* 
QLabel {
    font-family: DejaVu Sans Mono;
    font-size: 12pt;
    font-weight: normal;
    font-style: normal;
    border: 2px;
    margin: 2px;
}
*/


/* The mini-buffer

**Important**: Because Leo changes the color of the minibuffer dynamically,
stylesheets can not be used. Instead, set the desired colors using one of the
following settings, with defaults as shown::

    @color minibuffer-background-color = lightblue
    @color minibuffer-error-color = red
    @color minibuffer-foreground-color = black
    @color minibuffer-warning-color = lightgrey
*/
QLineEdit#lineEdit {
    selection-color: white;
    selection-background-color: lightgrey;
    font-family: DejaVu Sans Mono;
    font-size: 14pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

QLineEdit#status1 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 10pt;
}

QLineEdit#status2 {
    background-color: lightgrey;
    border-width: 1px;
    border-style: solid;
    border-color: darkgrey;
    font-size: 10pt;
}

/* button_kind based button coloring */
QPushButton[button_kind="run-script"] { 
    background-color: @run-script-btn-bg; }
QPushButton[button_kind="debug-script"] { 
    background-color: @debug-script-btn-bg; }
QPushButton[button_kind="generic-button"] { 
    background-color: @generic-button-btn-bg; }
QPushButton[button_kind="quick-move"] { 
    background-color: @quick-move-btn-bg; }
QPushButton[button_kind="interact"] { 
    background-color: @interact-btn-bg; }
QPushButton[button_kind="at-button"] { 
    background-color: @at-button-btn-bg; }
QPushButton[button_kind="script-button"] { 
    background-color: @script-button-btn-bg; }
/* example of name based button coloring.  Coincidentally, the
   name and button_kind of this button are the same */
QPushButton#script-button-button { 
    background-color: @script-button-button-btn-bg; }

QPlainTextEdit#screencastcaption {
    background-color: yellow;
    font-family: DejaVu Sans Mono; /* Times New Roman; */
    font-size: 18pt;
    font-weight: normal; /* normal,bold,100,..,900 */
    font-style: normal; /* normal,italic,oblique */
}

/* focused pane border highlight */
QTextEdit#log-widget, LeoQTreeWidget#treeWidget, QTextEdit#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-unfocus-color; 
}
QTextEdit:focus#log-widget, LeoQTreeWidget:focus#treeWidget, QTextEdit:focus#richTextEdit { 
  border-style: @focused-border-style;
  border-width: @focused-border-width; 
  border-color: @focused-border-focus-color; 
}
</t>
<t tx="ekr.20131119143342.18880"></t>
<t tx="ekr.20131119143342.18897"># Important: the headline must be @outline-data tree-abbreviations

# The body should contain a list tree abbreviation names.

# As with @data nodes, Leo ignores comment lines starting with '#'.

# 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.

abc;;

per-commander-plugin;;

</t>
<t tx="ekr.20131119143342.18898"></t>
<t tx="ekr.20131119143342.18899">1</t>
<t tx="ekr.20131119143342.18900">2</t>
<t tx="ekr.20131119143342.18901"></t>
<t tx="ekr.20131119143342.18902"></t>
<t tx="ekr.20131119143342.18903">&lt;&lt; docstring &gt;&gt;

__version__ = '0.0'
&lt;&lt; version history &gt;&gt;

&lt;&lt; imports &gt;&gt;

@others</t>
<t tx="ekr.20131119143342.18904">&lt;&lt; docstring &gt;&gt;
# From leoSettings.leo.
@language python
@tabwidth -4
__version__ = '0.0'
&lt;&lt; version history &gt;&gt;
&lt;&lt; imports &gt;&gt;
@others</t>
<t tx="ekr.20131119143342.18905">'''
This docstring should be a clear, concise description of
what the plugin does and how to use it.
'''
</t>
<t tx="ekr.20131119143342.18906">@
Put notes about each version here.</t>
<t tx="ekr.20131119143342.18907">import leo.core.leoGlobals as g

# Whatever other imports your plugins uses.
</t>
<t tx="ekr.20131119143342.18908">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.20131119143342.18909">def onCreate (tag, keys):
    
    c = keys.get('c')
    if c:
        thePluginController = pluginController(c)
</t>
<t tx="ekr.20131119143342.18910">class pluginController:
    
    @others</t>
<t tx="ekr.20131119143342.18911">def __init__ (self,c):
    
    self.c = c
    # Warning: hook handlers must use keywords.get('c'), NOT self.c.</t>
<t tx="ekr.20131119143342.18912"></t>
<t tx="ekr.20131119143342.18914"># Examples of abbreviations with substitutions, see
# abbreviations-subst-start and
# abbreviations-subst-env.   Use `\:` to extend
# code beyond one line, and preserve indentation.
# Values to be susstituted must be assigned to `x`.

date;;={|{x=time.asctime()}|}
ts;;={|{x=time.strftime("%Y%m%d%H%M%S")}|}
tss;;={|{x=time.strftime("%Y%m%d")}|}

# template for a .py file
""";;=@language python
\:"""
\:&lt;||&gt;{|{x=file_name()}|} - &lt;|describe|&gt;
\:
\:{|{x=user_name()}|}, {|{x=time.asctime()}|}
\:"""
\:
\:import os
\:import sys
\:
\:def main():
\:    &lt;|code|&gt;
\:
\:if __name__ == '__main__':
\:    main()\n

# see abbreviations-subst-env - `antid;;;` will expand to
# `antidisestablishmentarianism` if `antidisestablishmentarianism`
# already occurs in the text
;;;={|{x=long_word()}|}

# template for a class
class;;=class {|{
\:x=ask("Class name",default=c.p.h.replace('class ',''))}|}(object):
\:    """{|{x=get("Class name")}|} - &lt;|describe class|&gt;
\:    """
\:
\:    def __init__(self{|{
\:x = ask("__init__ params, comma sep.");
\:if x: x = ", " + x}|}):
\:        """&lt;|describe init|&gt;{|{x=param_doc("__init__ params, comma sep.")}|}
\:        """
\:        &lt;|code|&gt;
\:
\:    @others

# template for a def
def;;=def {|{x=ask("function name",default=c.p.h)}|}({|{x=in_class()}|}{|{x=ask("Params, comma sep.")}|}):
\:    """{|{x=get("function name")}|} - Return &lt;|return|&gt;{|{x=param_doc()}|}
\:    """
\:
\:    &lt;|code|&gt;

# rst csv table
csv-table;;=.. csv-table::
\:   :header: "&lt;|col 1|&gt;", "", "", ""
\:   :widths: 1, 1, 1, 1
\:
\:   &lt;|data|&gt;

# special case, causes core to select next place holder for editing
,,={|{x='__NEXT_PLACEHOLDER'}|}

# make balanced indented Django web template tags, see @data abbreviations-subst-env
};;={|{django_tag();x=''}|}

# close XML tags, see @data abbreviations-subst-env
&lt;;;={|{x=close_xml()}|}

# make balanced HTML tags, see @data abbreviations-subst-env
&gt;;;={|{x=html_tag()}|}</t>
<t tx="ekr.20131119143342.18936">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

# These can be used as usual, in *both* light and dark

yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71
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
magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83
violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77
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

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.20131119143342.18937"></t>
<t tx="ekr.20131119143342.18938"></t>
<t tx="ekr.20131119143342.18939"></t>
<t tx="ekr.20131119143342.18940"></t>
<t tx="ekr.20131119143342.18941">was blue

Solarized blue      #268bd2</t>
<t tx="ekr.20131119143342.18942">was blue

Solarized blue      #268bd2</t>
<t tx="ekr.20131119143342.18943">was blue

Solarized blue      #268bd2</t>
<t tx="ekr.20131119143342.18944">was blue

Solarized blue      #268bd2</t>
<t tx="ekr.20131119143342.18945">was #00aa00 (Idle comment green)

Solarize green      #859900
Solarized cyan      #2aa198
Solarized violet    #6c71c4
Solarized orange    #cb4b16</t>
<t tx="ekr.20131119143342.18946"></t>
<t tx="ekr.20131119143342.18947"></t>
<t tx="ekr.20131119143342.18948"></t>
<t tx="ekr.20131119143342.18949">was black</t>
<t tx="ekr.20131119143342.18950">was firebrick3

Solarized colors:
    
magenta   #d33682

Dark comments   base01
Light comments  base1 comments
</t>
<t tx="ekr.20131119143342.18951"></t>
<t tx="ekr.20131119143342.18952"></t>
<t tx="ekr.20131119143342.18953"></t>
<t tx="ekr.20131119143342.18954"></t>
<t tx="ekr.20131119143342.18955">Use these settings to get something like the solarized colors.</t>
<t tx="ekr.20131119143342.18956">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.
</t>
<t tx="ekr.20131119143342.18962">@language python
@nocolor-node

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.
</t>
<t tx="ekr.20131119143342.18964">print('hi from leoSettings.leo')</t>
<t tx="ekr.20131119143342.18966">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.20131119143342.18967"></t>
<t tx="ekr.20131119143342.18968"></t>
<t tx="ekr.20131119143342.19002">@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.20131119143342.19004">'''Find the section definition for name as Gregory wants ;-) '''

@others

g.findReference = myFindReference
</t>
<t tx="ekr.20131119143342.19005">def myFindReference(c,name,root):

    '''Find the section definition for name as Gregory wants ;-) '''
    
    trace = True and not g.unitTesting

    if g.callers().find('recolor') &gt; -1: trace = False # Don't trace the colorizer.
    
    if trace: g.trace(name,root.h)
    
    for p in root.children():
        if p.matchHeadline(name) and not p.isAtIgnoreNode():
            if trace: g.trace(p.h,'1 parent',p.parent().h)
            return p

    for p in root.subtree():
        assert(p!=root)
        if p.matchHeadline(name) and not p.isAtIgnoreNode():
            if trace: g.trace(p.h,'2 parent',p.parent().h)
            return p

    if trace: g.trace("not found:",name,root.h)
    return c.nullPosition()
</t>
<t tx="ekr.20131119143342.19006"></t>
<t tx="ekr.20131119143342.19007">'''Print all commands that lack a docstring.'''

import os ; os.system('cls')

@others

d = c.commandsDict # Keys are command names, values are functions.
aList = list(d.keys())
aList.sort()
empty = []
for key in aList:
    func = d.get(key)
    s = g.getDocStringForFunction(func)
    if not s: empty.append(key)

print('%s commands' % (len(aList)))
print('%s commands without docstrings...' % len(empty))
for key in empty:
    print(key)
</t>
<t tx="ekr.20131119143342.19008"></t>
<t tx="ekr.20131119143342.19009">n = len('insert-newline              ')

result = []
for line in g.splitLines(p.b):
    i = line.find('=')
    if i == -1 or i &lt;= n:
        result.append(line)
    else:
        result.append(line[:n] + line[i:])

p.b = ''.join(result)
</t>
<t tx="ekr.20131119143342.19010">@others

import os ; os.system('cls')

for p in p.self_and_subtree():
    if p.b:
        i,aList,result = 0,g.splitLines(p.b),[]
        while i &lt; len(aList):
            j,s = i,aList[i]
            if s.lstrip().startswith('#'):
                j,comments = clean_doc(aList,i)
                result.extend(comments)
            else:
                result.append(s)
                j = i + 1
            assert j &gt; i
            i = j

        result = ''.join(result)
        if result != p.b:
            g.es('changed',p.h)
            p.b = result
</t>
<t tx="ekr.20131119143342.19011">def clean_doc (aList,i):
    
    j = i
    while j &lt; len(aList) and aList[j].lstrip().startswith('#'):
        j += 1

    n = j - i
    assert n &gt; 0 # aList[i] should be a comment line.
    
    if n &gt; 1:
        comments = aList[i:j]
        s = comments[0]
        junk,w = g.skip_leading_ws_with_indent(s,0,tab_width=4)
        result = []
        for i in range(n):
            s = comments[i].lstrip()
            assert s.find('#') == 0
            body = s[1:].lstrip()
            if body:
                result.append('%s# %s' % ((' ' * w),body))
            elif i in (0,n-1):
                pass # Omit the line entirely.
            else:
                result.append('\n') # Add a blank line
    else:
        result = aList[i:j]
    
    if 1:
        g.trace()
        for z in result: print(repr(z))
    return j,result
</t>
<t tx="ekr.20131119143342.19012">@others

for p in p.self_and_subtree():
    clean_head(p)
    clean_tail(p)
</t>
<t tx="ekr.20131119143342.19013">def clean_head(p):

    lines = g.splitLines(p.b)

    for i in range(len(lines)):
        s = lines[i]
        if s.strip():
            break
    else:
        i = len(s)

    s = ''.join(lines[i:])
    if s != p.b:
        p.b = s
</t>
<t tx="ekr.20131119143342.19014">def clean_tail(p):

    lines = g.splitLines(p.b)
    i = len(lines) - 1
    while i &gt;= 0:
        s = lines[i]
        if s.strip():
            break
        else:
            i -= 1

    s = ''.join(lines[:i+1])
    if s != p.b:
        p.b = s
</t>
<t tx="ekr.20131119143342.19015">s = p.bodyString()

s = s.replace('\n\n','***2***')
s = s.replace('\n',' ')
s = s.replace('***2***','\n\n')
s = s.replace('\n  ','\n')
s = s.replace('\n ','\n')
s = s.replace('     ',' ')
s = s.replace('    ',' ')
s = s.replace('   ',' ')
s = s.replace('  ',' ')

p.setBodyString(s)</t>
<t tx="ekr.20131119143342.19016"></t>
<t tx="ekr.20131119143342.19017">'''Recursively create @auto nodes for all files and directories of the given path.
Create @auto nodes only for files with the given extensions.
'''

import os
import sys
@others


    
run(script_args)</t>
<t tx="ekr.20131119143342.19018">def importFiles (theDir,type=None,recursive=False):
    
    root = c.p.copy()
    v = c.currentVnode()

    if not g.os_path_exists(theDir):
        g.es("directory does not exist: " + theDir)
        return

    root = createLastChildOf(v,"imported files")
    try:
        importDir (theDir,type,recursive,root)
        root.contract()
    except:
        g.es_exception()
        
    # Do this last, as a double check on paths, etc.
    loadAtAutoFiles(root)
    disableAtAutoFiles(root)
    c.redraw()
</t>
<t tx="ekr.20131119143342.19019">def createLastChildOf (v,headline):

    child = v.insertAsLastChild()
    child.initHeadString(headline.replace('\\','/'))
    return child
</t>
<t tx="ekr.20131119143342.19020">def disableAtAutoFiles(root):

    for p in root.subtree():
        if p.isAtAutoNode():
            assert p.h.startswith('@auto ')
            p.h = '@' + p.h</t>
<t tx="ekr.20131119143342.19021">def importDir (theDir,types,recursive,root,level=0):

    g.es("theDir: " + theDir,color="blue")

    try:
        files = os.listdir(theDir)
        files2 = [] ; dirs =[]
        for f in files:
            path = g.os_path_join(theDir,f)
            if g.os_path_isfile(path):
                name, ext = g.os_path_splitext(f)
                if not types or ext in types:
                    files2.append(path)
            elif recursive:
                dirs.append(path)
        if len(files2) &gt; 0 or len(dirs) &gt; 0:
            path_part = g.choose(level==0,theDir,g.os_path_basename(theDir))
            import_root = createLastChildOf(root,'@path %s' % (path_part))
        else:
            import_root = root
        
        c.selectVnode(import_root)
        
        if len(files2) &gt; 0:
            files2.sort()
            for fn in files2:
                p2 = createLastChildOf(import_root,'@auto %s' % (
                    g.shortFileName(fn)))
                
        if len(dirs) &gt; 0:
            dirs.sort()
            for theDir in dirs:
                importDir(theDir,types,recursive,import_root,level+1)
    except:
        g.es("exception in importFiles script")
        g.es_exception()
</t>
<t tx="ekr.20131119143342.19022">def loadAtAutoFiles(root):
    at = c.atFileCommands
    p = root.copy()
    while p:
        if p.isAtAutoNode():
            fn = p.atAutoNodeName()
            at.readOneAtAutoNode(fn,p)
            p.moveToNodeAfterTree()
        else:
            p.moveToThreadNext()
</t>
<t tx="ekr.20131119143342.19023">def run(args):
    
    theDir = args[0]
    types = args[1:] or ('.py')

    importFiles(theDir,types,recursive=True)

    c.redraw()
    g.es_print("done",color="blue")
</t>
<t tx="ekr.20131119143342.19024"></t>
<t tx="ekr.20131119143342.19025">'''Convert a script to a string as if written with @nosent.

Writes the script to a node called "flattened p.h".'''

at = c.atFileCommands

at.write (p,kind = '@unknown',
    nosentinels = True, thinFile = False,
    scriptWrite = False, toString = True)

output = p.insertAfter()
output.h = 'flattened %s' % p.h
output.b = at.stringOutput
c.redraw()
</t>
<t tx="ekr.20131119143342.19026">'''Append p.b to p.back().b. and delete node p.'''

u = c.undoer
p2 = p.back()
if p2:
    b = p.b.lstrip()
    if not b.startswith('\n'):
        b = '\n' + b
    # undoData = u.beforeChangeGroup(p)
    p2.b = p2.b + b
    p.doDelete(p2)
    # u.afterChangeGroup(p,'join-below',undoData)
    c.redraw(p2)
</t>
<t tx="ekr.20131119143342.19027">'''Prepend p.b to p.next().b. and delete node p.'''

u = c.undoer
p2 = p.next()
if p2:
    b = p.b.lstrip()
    if not b.endswith('\n'):
        b = b + '\n'
    # undoData = u.beforeChangeGroup(p)
    p2.b = b + p2.b
    p.doDelete(p2)
    # u.afterChangeGroup(p,'join-below',undoData)
    c.redraw(p2)
</t>
<t tx="ekr.20131119143342.19028">'''Copy the body text of all descendants to the parent's body text.'''

# Great for creating what's new nodes.
result = [p.b]
b = c.undoer.beforeChangeNodeContents(p)
for child in p.subtree():
    if child.b:
        result.append('\n- %s\n\n%s\n' % (child.h,child.b))
    else:
        result.append('\n- %s\n\n' % (child.h))
p.b = ''.join(result)
c.undoer.afterChangeNodeContents(p,'promote-child-bodies',b)
</t>
<t tx="ekr.20131119143342.19029">@others

run(p)</t>
<t tx="ekr.20131119143342.19030">def make_node(p,lines,name):
    child = p.insertAsLastChild()
    child.h = name
    child.b = ''.join(lines)</t>
<t tx="ekr.20131119143342.19031">def remove_trailing_decorators(lines):
    
    decorators = []
    while lines:
        s = lines.pop()
        if s.startswith('@'):
            j = g.skip_id(s,1,chars='-')
            name = s[1:j]
            if name not in g.globalDirectiveList:
                decorators.append(s)
            else:
                lines.append(s)
                break
        else:
            lines.append(s)
            break
        
    if decorators:
        decorators.reverse()
        
    return decorators
</t>
<t tx="ekr.20131119143342.19032">def run(p):
    
    '''Split p.b into nodes for each *top-level* def.'''
    
    b = c.undoer.beforeChangeTree(p)

    lines,name = [],None
    for s in g.splitlines(p.b):
        if g.match_word(s,0,'def'):
            if lines and name:
                decorators = remove_trailing_decorators(lines)
                make_node(p,lines,name)
                lines = decorators
            lines.append(s)
            i = g.skip_ws(s,3)
            j = g.skip_id(s,i,'_')
            name = s[i:j]
        else:
            lines.append(s)
            
    if lines and name:
        make_node(p,lines,name)
        
    c.undoer.afterChangeTree(p,'split-defs',b)
    c.redraw()
</t>
<t tx="ekr.20131119143342.19033"></t>
<t tx="ekr.20131119143342.19034">u = c.undoer
w = c.frame.body.bodyCtrl
p2 = p.insertAsNthChild(0)
c.setHeadString(p2,'@test xxx')
s = '''\
if g.unitTesting:
    c,p = g.getTestVars()

    '''
c.setBodyString(p2,s)
c.selectPosition(p2)
c.redraw()
w.setInsertPoint(len(s))
c.bodyWantsFocus()
c.outerUpdate()
</t>
<t tx="ekr.20131119143342.19202">@nocolor

This file contains 6 sets of key bindings and settings.

- The *active* set should be *outside* of this node and its descendants.
- The *inactive* sets should be children of this node.

@color</t>
<t tx="ekr.20131119143342.19203">@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.20131119143342.19204">@color</t>
<t tx="ekr.20131119143342.19205">abbrev-list                         = None
abbrev-read                         = None
abbrev-write                        = None
abort-edit-headline                 = Shift-Esc
about-leo                           = None
add-comments                        = Ctrl-(
abbrev-add-global                   = None
abbrev-kill-all                     = None
advertised-undo                     = Ctrl-underscore
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
buffer-append-to                    = None
buffer-kill                         = None
buffer-prepend-to                   = None
buffer-switch-to                    = None
buffers-list                        = None
buffers-list-alphabetically         = None
capitalize-word                     = Alt-c
cascade-windows                     = None
center-line                         = Alt-s
center-region                       = None
#check-all-python-code              = None
check-outline                       = None
# check-python-code                 = 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-}
digit-argument                      = None
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
escape                              = Escape
eval-expression                     = Alt-colon
eval-expression                     = None
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-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-paragraph                 = Alt-h
extract                             = Shift-Ctrl-D
extract-names                       = Shift-Ctrl-N
# extract-python-method               = None
# extract-section                     = Shift-Ctrl-E</t>
<t tx="ekr.20131119143342.19206">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-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
hide-spell-tab                      = None
hoist                               = None
how-many                            = None
iconify-frame                       = Ctrl-z
import-file                         = None
# import-at-file                      = None         # Removed Shift-Ctrl-F: not useful enough.
# import-at-root                      = None
# import-cweb-files                   = None
# import-derived-file                 = None
# import-flattened-outline            = None
# import-noweb-files                  = 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
abbrev-inverse-add-global           = None
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-to-end-of-line                 = None
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.20131119143342.19207">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
number-command                  = None
number-command-0                = Alt-0
number-command-1                = Alt-1
number-command-2                = Alt-2
number-command-3                = Alt-3
number-command-4                = Alt-4
number-command-5                = Alt-5
number-command-6                = Alt-6
number-command-7                = Alt-7
number-command-8                = Alt-8
number-command-9                = Alt-9 
# open-compare-window             = None
open-leoDocs-leo                = None
open-leoPlugins-leo             = None
open-leoSettings-leo            = None
open-scripts-leo                = None
open-offline-tutorial           = None
open-online-home                = None
# open-online-tutorial            = None
open-outline                    = None         # Ctrl-O conflicts with insert-newline
open-python-window              = None         # Removed Alt-P: not useful enough.
open-spell-tab                  = None
open-with                       = 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
pretty-print-all-python-code    = None
pretty-print-python-code        = None
previous-line                   = Ctrl-p
previous-line-extend-selection  = None
print-bindings                  = None
print-commands                  = None
promote                         = Ctrl-{            
# query-replace                   = Alt-percent
# query-replace-regex             = None
quick-command                   = Ctrl-c
register-append-to              = None
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
register-copy-to                = None
register-copy-rectangle-to      = None
register-jump-to                = None
register-increment              = None
register-insert                 = None
register-point-to               = None
register-prepend-to             = None
register-view                   = None
remove-blank-lines              = None
remove-sentinels                = None
repeat-complex-command          = None
replace-string                  = 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-again                    = None
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-colors                     = 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-reverse-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.20131119143342.19208"></t>
<t tx="ekr.20131119143342.19209">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.20131119143342.19210">@color
@

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.20131119143342.19211">abbrev-kill-all                     = None
abbrev-list                         = None
abbrev-read                         = None
abbrev-write                        = 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
abbrev-add-global                   = None
add-space-to-lines                  = None
add-tab-to-lines                    = None
advertised-undo                     = 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
buffer-append-to                    = None
buffer-kill                         = None
buffer-prepend-to                   = None
buffer-switch-to                    = None
buffers-list                        = None
buffers-list-alphabetically         = None
capitalize-word                     = None
cascade-windows                     = None
center-line                         = None
center-region                       = None
chapter-clone-node-to               = None
chapter-copy-node-to                = None
chapter-create                      = None
chapter-move-node-to                = None
chapter-remove                      = 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
digit-argument                      = 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
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
escape                              = None
eval-expression                     = 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.20131119143342.19212">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
replace                             = None
replace-all                         = None
replace-then-find                   = None
find-next                           = None
find-all                            = None
find-prev                           = 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-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-print-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-minibuffer                 = None
help-for-python                     = None
help-for-command                    = None
hide-body-pane                      = None
hide-log-pane                       = None
hide-pane                           = None
hide-outline-pane                   = None
hide-spell-tab                      = None
hoist                               = None
how-many                            = 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
abbrev-inverse-add-global           = None
isearch-backward                    = None
isearch-backward-regexp             = None
isearch-forward                     = None
isearch-forward-regexp              = None
isearch-with-present-options        = None
keep-lines                          = None
keyboard-quit                       = None
kill-line                           = None
kill-to-end-of-line                 = None
kill-paragraph                      = None
kill-region                         = None
kill-region-save                    = None
kill-sentence                       = None
kill-word                           = None
line-number                         = None
macro-call-last                     = None
macro-end-recording                 = None
macro-name-last                     = None
macro-start-recording               = None
mark                                = None
mark-changed-items                  = None
mark-subheads                       = None
match-brackets                      = 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.20131119143342.19213">negative-argument                   = None
new                                 = None
newline-and-indent                  = None
next-line                           = None
next-line-extend-selection          = None
number-command                      = None
number-command-0                    = None
number-command-1                    = None
number-command-2                    = None
number-command-3                    = None
number-command-4                    = None
number-command-5                    = None
number-command-6                    = None
number-command-7                    = None
number-command-8                    = None
number-command-9                    = None
# number-to-register                = None
# open-compare-window               = None
open-leoDocs-leo                    = None
open-leoPlugins-leo                 = None
open-leoSettings-leo                = None
open-scripts-leo                    = None
open-offline-tutorial               = None
open-online-home                    = None
# open-online-tutorial                = None
open-outline                        = None
open-python-window                  = None
open-spell-tab                      = None
open-with                           = None
outline-to-cweb                     = None
outline-to-noweb                    = None
paste-node                          = None
paste-retaining-clones              = None
paste-text                          = None
pretty-print-all-python-code        = None
pretty-print-python-code            = None
previous-line                       = None
previous-line-extend-selection      = None
print-bindings                      = None
print-commands                      = None
print-focus                         = None
promote                             = None
# propagate-key-event                 = None
# query-replace                       = None
# query-replace-regex                 = 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
register-append-to                  = None
register-copy-to                    = None
register-copy-rectangle-to          = None
register-jump-to                    = None
register-increment                  = None
register-insert                     = None
register-point-to                   = None
register-prepend-to                 = None
register-view                       = None
remove-blank-lines                  = None
remove-sentinels                    = None
remove-space-from-lines             = None
remove-tab-from-lines               = None
repeat-complex-command              = None
replace-string                      = 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-again                        = None
search-backward                     = None
search-forward                      = None
search-with-present-options         = 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-replace-string                  = None
set-overwrite-state                 = None
settings                            = None
shell-command                       = None
shell-command-on-region             = None
show-calltips                       = None
show-calltips-force                 = None
show-colors                         = 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
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-reverse-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
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.20131119143342.19214">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.20131119143342.19215">To use the Vim emulation within you Leo files
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.20131119143342.19216">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://leoeditor.com/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.20131119143342.19217">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.20131119143342.19218">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.20131119143342.19219"></t>
<t tx="ekr.20131119143342.19220">@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.20131119143342.19221">This allows the newline character to switch from the outline pane to the body pane.</t>
<t tx="ekr.20131119143342.19222">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.20131119143342.19223">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.20131119143342.19224">#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.20131119143342.19225">#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.20131119143342.19226">#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.20131119143342.19227">#Focus to Outline pane
#Bind: &lt;Tab&gt;

--&gt; focus-to-tree
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20131119143342.19228">#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.20131119143342.19229">#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.20131119143342.19230">#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.20131119143342.19231">#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.20131119143342.19232">#Save file and exit Leo
#Bind: :wq&lt;cr&gt;

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

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

exit-leo = return</t>
<t tx="ekr.20131119143342.19235">#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.20131119143342.19236">#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.20131119143342.19237">#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.20131119143342.19238">#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.20131119143342.19239">#Save file and exit Leo
#Bind: :wq&lt;cr&gt;

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

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

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

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

--&gt; save-file
--&gt; exit-leo
</t>
<t tx="ekr.20131119143342.19244"># 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.20131119143342.19245">#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.20131119143342.19246">#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.20131119143342.19247">--&gt; set-silent-mode
kill-line = d
</t>
<t tx="ekr.20131119143342.19248">--&gt; end-edit-headline
--&gt; copy-node
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20131119143342.19249">#Paste node
#Bind: Ctrl-v

--&gt; end-edit-headline
--&gt; paste-node
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20131119143342.19250">--&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.20131119143342.19251">#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.20131119143342.19252">#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.20131119143342.19253">#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.20131119143342.19254">--&gt; goto-next-visible
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20131119143342.19255">--&gt; goto-prev-visible
--&gt; edit-headline

--&gt; exit-named-mode</t>
<t tx="ekr.20131119143342.19256">#Search forward within suboutline
#Bind: /
--&gt; set-find-suboutline-only
--&gt; search-forward</t>
<t tx="ekr.20131119143342.19257">#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.20131119143342.19258">--&gt; contract-or-go-left
--&gt; edit-headline

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

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

--&gt; exit-named-mode</t>
<t tx="ekr.20131119143342.19261">--&gt; move-outline-up
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20131119143342.19262">--&gt; move-outline-down
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20131119143342.19263">--&gt; move-outline-left
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20131119143342.19264">--&gt; move-outline-right
--&gt; edit-headline
--&gt; exit-named-mode
</t>
<t tx="ekr.20131119143342.19265">#Clone current node
#Bind: t

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

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

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

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

--&gt; unmark-all
--&gt; edit-headline
--&gt; exit-named-mode</t>
<t tx="ekr.20131119143342.19270"></t>
<t tx="ekr.20131119143342.19271">#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.20131119143342.19272">#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.20131119143342.19273"># 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.20131119143342.19274">#Search forward within node
#Bind: /

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

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

--&gt; set-find-node-only
--&gt; search-forward
</t>
<t tx="ekr.20131119143342.19277">#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.20131119143342.19278">#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.20131119143342.19279">#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.20131119143342.19280">#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.20131119143342.19281">#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.20131119143342.19282">#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.20131119143342.19283">#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.20131119143342.19284">#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.20131119143342.19285">#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.20131119143342.19286">#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.20131119143342.19287">#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.20131119143342.19288">#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.20131119143342.19289">#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.20131119143342.19290">#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.20131119143342.19291">#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.20131119143342.19292">#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.20131119143342.19293">#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.20131119143342.19294">#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.20131119143342.19295">#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.20131119143342.19296">#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.20131119143342.19297">#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.20131119143342.19298">#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.20131119143342.19299">#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.20131119143342.19300">#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.20131119143342.19301">#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.20131119143342.19302">#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.20131119143342.19303">#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.20131119143342.19304">#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.20131119143342.19305">#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.20131119143342.19306">#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.20131119143342.19307">#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.20131119143342.19308">#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.20131119143342.19309">#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.20131119143342.19310">#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.20131119143342.19311">#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.20131119143342.19312">#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.20131119143342.19313">#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.20131119143342.19314">#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.20131119143342.19315">#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.20131119143342.19316">#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.20131119143342.19317">#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.20131119143342.19318">#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.20131119143342.19319">#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.20131119143342.19320">#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.20131119143342.19321">#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.20131119143342.19322">#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.20131119143342.19323">#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.20131119143342.19324">#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.20131119143342.19325">#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.20131119143342.19326">#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.20131119143342.19327">#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.20131119143342.19328">#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.20131119143342.19329">#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.20131119143342.19330">#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.20131119143342.19331">#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.20131119143342.19332">#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.20131119143342.19333">#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.20131119143342.19334">#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.20131119143342.19335">#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.20131119143342.19336">#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.20131119143342.19337">#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.20131119143342.19338">#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.20131119143342.19339">#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.20131119143342.19340">#Substitute character
#Bind: s

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

--&gt; set-silent-mode
--&gt; kill-line
--&gt; set-insert-state           #Enter insert mode</t>
<t tx="ekr.20131119143342.19342">#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.20131119143342.19343">#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.20131119143342.19344">#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.20131119143342.19345">#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.20131119143342.19346">#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.20131119143342.19347">#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.20131119143342.19348">#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.20131119143342.19349">#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.20131119143342.19350">#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.20131119143342.19351">#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.20131119143342.19352">#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.20131119143342.19353">#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.20131119143342.19354">#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.20131119143342.19355">#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.20131119143342.19356">#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.20131119143342.19357">#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.20131119143342.19358">#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.20131119143342.19359">#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.20131119143342.19360">#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.20131119143342.19361">#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.20131119143342.19362">#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.20131119143342.19363"></t>
<t tx="ekr.20131119143342.19364">--&gt; focus-to-tree
--&gt; goto-next-visible
--&gt; edit-headline
--&gt; focus-to-body
--&gt; exit-named-mode
</t>
<t tx="ekr.20131119143342.19365">--&gt; focus-to-tree
--&gt; goto-prev-visible
--&gt; edit-headline
--&gt; focus-to-body
--&gt; exit-named-mode
</t>
<t tx="ekr.20131119143342.19366">--&gt; focus-to-tree
--&gt; expand-and-go-right
--&gt; edit-headline
--&gt; focus-to-body

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

--&gt; exit-named-mode</t>
<t tx="ekr.20131119143342.19368">#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.20141014135135.2488">@language rest

From: Terry Brown &lt;terry_n_brown@yahoo.com&gt;
https://gist.github.com/tbnorth/5530059

The abbreviation "persist;;" expands to::
@language python

    import json
    
    # name for persistent data store
    json_state_file = "cache_info_file.json"   
    if not os.path.exists(json_state_file):
        # create persistent data store if it doesn't exist
        json.dump({'cache_items':{}}, open(json_state_file, 'w'))
    # load persistent data
    cache_info = json.load(open(json_state_file))
    
    def main():
        # do stuff with cache_info...
    
    if __name__ == '__main__':
    
        try:
            main()
        finally:
            # save altered persistent data
            json.dump(cache_info, open(json_state_file, 'w'), indent=4)
    
@language rest

with appropriate interaction to customize all the parts which, in the above
example, include "cache_", i.e. the filename and the variable name.

The point is it seems silly to create a module and hence a dependency
for what is barely 4 lines of actual code, but those 4 lines give you
very handy robust persistence, so something like an editor abbreviation
is the obvious way to make the available - nothing Leo specific here,
except that only serious editors have abbreviations like that ;-).

&gt; How do you use the code inserted by the abbreviation? 

The code is just a framework for providing a dictionary the contents of
which persist between runs of the program. I've used it for code that's
making lots of small url requests against a server, to cache the results so
that during development the crash / debug / re-run cycle is faster because
each piece of data is requested only once, ever, not once every run. More
recently I was using it to store key value pairs of filenames and a comment
on the issue in the file, knowing that completing the analysis of the
issues in the files would take more than one run of the program which was
identifying the issues.

So in the example below, the content of the cache_info dictionary is
persistent, whatever main() does with it is seen next time the program's
run. Nothing Leo specific except that it's really just an import statement
plus 5 lines of code and doesn't seem worth its own file, but is more than
you want to re-type all the time either, so ideal for an abbreviation in
your favorite editor.
</t>
</tnodes>
</leo_file>
