Thank-you for this. 

Chris

On Wednesday, August 6, 2014 12:47:45 PM UTC-7, Jacob Peck wrote:
>
> Hi all, 
>
> I've put the last bit of planned functionality into the Tagging UI 
> (nodetags.py plugin) today.  It's available in the latest commit. Here's 
> the new docstring: 
>
> ---- 
> Provides node tagging capabilities to Leo 
>
> By Jacob M. Peck 
>
> API 
> === 
>
> This plugin registers a controller object to c.theTagController, which 
> provides the following API:: 
>
>      tc = c.theTagController 
>      tc.get_all_tags() # return a list of all tags used in the current 
> outline, automatically updated to be consistent 
>      tc.get_tagged_nodes('foo') # return a list of positions tagged 'foo' 
>      tc.get_tags(p) # return a list of tags applied to the node at 
> position p; returns [] if node has no tags 
>      tc.add_tag(p, 'bar') # add the tag 'bar' to the node at position p 
>      tc.remove_tag(p, 'baz') # remove the tag 'baz' from p if it is in 
> the tag list 
>
> Internally, tags are stored in `p.v.unknownAttributes['__node_tags']` as 
> a set. 
>
> UI 
> == 
>
> The "Tags" tab in the Log pane is the UI for this plugin.  The bar at 
> the top is a search bar, editable to allow complex search queries.  It 
> is pre-populated with all existing tags in the outline, and remembers 
> your custom searches within the given session.  It also acts double duty 
> as an input box for the add (+) button, which adds the contents of the 
> search bar as a tag to the currently selected node. 
>
> The list box in the middle is a list of headlines of nodes which contain 
> the tag(s) defined by the current search string.  These are clickable, 
> and doing so will center the focus in the outline pane on the selected 
> node. 
>
> Below the list box is a dynamic display of tags on the currently 
> selected node.  Left-clicking on any of these will populate the search 
> bar with that tag, allowing you to explore similarly tagged nodes. 
> Right-clicking on a tag will remove it from the currently selected node. 
>
> The status line at the bottom is purely informational. 
>
> The tag browser has set-algebra querying possible.  Users may search for 
> strings like 'foo&bar', to get nodes with both tags foo and bar, or 
> 'foo|bar' to get nodes with either or both.  Set difference (-) and 
> symmetric set difference (^) are supported as well.  These queries are 
> left-associative, meaning they are read from left to right, with no 
> other precedence.  Parentheses are not supported. See below for more 
> details. 
>
> Searching 
> --------- 
>
> Searching on tags in the UI is based on set algebra.  The following 
> syntax is used:: 
>
>      <tag>&<tag> - return nodes tagged with both the given tags 
>      <tag>|<tag> - return nodes tagged with either of the given tags (or 
> both) 
>      <tag>-<tag> - return nodes tagged with the first tag, but not the 
> second tag 
>      <tag>^<tag> - return nodes tagged with either of the given tags 
> (but *not* both) 
>
> These may be combined, and are applied left-associatively, building the 
> set from the left, such that the query `foo&bar^baz` will return only 
> nodes tagged both 'foo' and 'bar', or nodes tagged with 'baz', but *not* 
> tagged with all three. 
>
> Tag Limitations 
> --------------- 
> The API is unlimited in tagging abilities.  If you do not wish to use 
> the UI, then the API may be used to tag nodes with any arbitrary 
> strings.  The UI, however, due to searching capabilities, may *not* be 
> used to tag (or search for) nodes with tags containing the special 
> search characters, `&|-^`.  The UI also cannot search for tags of 
> zero-length, and it automatically removes surrounding whitespace 
> (calling .strip()). 
> ---- 
>
> Any comments would be welcome -- thanks! 
> -->Jake 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.

Reply via email to