Final (hopefully) % escape fix.

Managed to squash it in the list, but not in the reader.

Signed-off-by: Jack Miller <jack@codezen.org>
Fix hung items

Not really hung, per se, although they appeared that way. Canto protects
items that you've selected or are reading so that they don't disappear
right from under you and cause your cursor to move without you. As a
side-effect though, an item that *should* be filtered out might not be,
but then unless that tag gets updated by the daemon, or you change and
attribute in that tag, nothing is going to cause that tag to ever get
updated. So, especially on slow moving feeds, the item will just stay
there forever thanks to our lazy update cycle.

We fix this by causing the client to view changing protection (i.e.
select / unselect / reader / unreader) as grounds to ask for items on
tick.

Signed-off-by: Jack Miller <jack@codezen.org>
Create priority thread.

With the daemon round-robining connections, we can start a second
connection that will only be used for stuff that the user is waiting on.
For now, this is just reader content, which used to get stuck for
seconds at a time waiting for background updates to process.

In the future, it could perhaps be expanded to filter settings, although
it wouldn't eliminate getting ITEMS responses processed without them
set.

Signed-off-by: Jack Miller <jack@codezen.org>
Eliminate redundant doupdate()

At one point this may have been necessary, but these days the top level
drawing windows (taglist, text) are designed such that a refresh will
provoke a redraw, so we needn't do the output twice in quick succession.
This eliminates a lot of flicker in the interface.

Signed-off-by: Jack Miller <jack@codezen.org>
Remove tag iteration from prot_attributes

We really don't need to find the item when they've all registered an
on_attribute callback anyway.

Signed-off-by: Jack Miller <jack@codezen.org>
Add basic canto-curses manpage.

Signed-off-by: Jack Miller <jack@codezen.org>
Have item fail out if there are no items.

Signed-off-by: Jack Miller <jack@codezen.org>
Reduce standard update interval to 5

Since the interface is already tailored to only ask for items in tags
that have given TAGCHANGE, increasing the frequency just makes the
interface quicker to show new items, rather than increasing any sort of
churn.

Signed-off-by: Jack Miller <jack@codezen.org>
Fix text boxes closing over unused space.

When no other piece of the interface is claiming the parts of the screen
of the window that is destroyed, it's possible that a simple refresh
won't look right and may appear as though the window is still live.

Signed-off-by: Jack Miller <jack@codezen.org>
Fix some resize cases.

Similar to last patch.

Signed-off-by: Jack Miller <jack@codezen.org>
Add (un)collapse * keybinds C and V.

Signed-off-by: Jack Miller <jack@codezen.org>
Fix edit capability (python 3)

Signed-off-by: Jack Miller <jack@codezen.org>
Change URL in manpage

Signed-off-by: Jack Miller <jack@codezen.org>
Ignore out-of-sync canto-state attributes

This avoids the case where in flight state changes appear (but aren't)
forgotten.

Signed-off-by: Jack Miller <jack@codezen.org>
Minor Py3 cleanup

Signed-off-by: Jack Miller <jack@codezen.org>
Refactor some theme settings for ease of use

This allows the default story format string to have its theme and color
settings changed easily for (un)-selected/read/marked cases without
having to edit the format string directly.

Signed-off-by: Jack Miller <jack@codezen.org>
Add theme flexibility to tags

Signed-off-by: Jack Miller <jack@codezen.org>
Reset theme counters after each block is drawn.

This prevents half specified theme options from bleeding over.

Signed-off-by: Jack Miller <jack@codezen.org>
Add proper versioning.

Signed-off-by: Jack Miller <jack@codezen.org>
Add finer update control

:update_auto = <bool>
:update_interval = <int>
:update_style = ("append"|"maintain")

Signed-off-by: Jack Miller <jack@codezen.org>