Topydo was only identifying a task as completed if it included a
completion date (which topydo automatically adds). This affects
compatibility with other todo.txt apps, making archiving unreliable.
The code had a backport shim for importing shutil get_terminal_size.
For modern versions, the call is in shutil in the standard library.
Starting with 3.9, on Debian, the backport reference causes a FTBFS.
Drop the workaround.
Support for security fixes for Python 3.2 ended in 2016.
Previously there wasn't any indicator of focus for empty columns. Now
title widget is highlighted then. Color is the same as for TodoWidget
focus and already configured by 'focus_background_color'.
When scrolling down we need to switch to valign=bottom to properly show
last lines of the TodoWidget at the end of the TodoListWidget. Also
config <Down> key to use 'down' action in default config. Without such
config entry, using <Down> key would not take advantage of valign fix.
Also do not focus dividers when jumping with 'home' shortcut.
arrow>=0.15.0 doesn't accept timestamps given as `str`. Unfortunately
`json` used in ChangeSet doesn't preserve `float` type in dictionary
keys and always converts it to `str`. This leaded to feeding `arrow`
with unsupported strings.
Read note at: https://docs.python.org/3/library/json.html#json.dumps for
further explanation.
This fixes#271 and #274
Previously, unprioritized tasks were set below all other tasks. This
change sets unprioritized tasks directly in the middle of all task
prioritizations.
Before this patch a `t edit ...` will remove todo items selected by
`...` and then do equivalent of `t add` with input from result of
editing. This works, but has the property that whenever a todo item is
edited, it is always moved till the end of todo.txt file.
This property creates noise and makes synchronization harder to implement for
some of us who uses VCS and different machines to maintain todo.txt .
-> Teach edit to preserve todo items in their places. Adjust existing
tests and add a couple more exercising cases where either new todo
items are added in the editor, or vice versa, removed in the editor.
/cc @mruwek
When you enter a todo item: "Call office at 09:00", the 09:00 would be
seen as a tag-value pair. Because of this, the timestamp would be
removed from the todo text: "Call office at ".
Discussed in issue #211.
`topydo revert ls` will now show all saved backup points with position
number (starting with 1), date and time of relevant action, and its
label.
`topydo revert 2` will revert to a point **before** the backup point
marked as 2 in `topydo revert ls` (i.e. it will go 2 changes backwards
or phrasing more naturally: revert last 2 changes).
Warning: changes between between current state and desired backup point
are also deleted to avoid false assumption that our backups can be
treated as some sort of atomic "patches".
self.todolist may not be present; it could be None. This is the case
when the list formatter is instantiated from a TodoWidget in the column
UI, which passes None for the todo list.
When using numerical IDs, the ID width is padded to the log10 of the
todo length.
When using textual IDs, todo lists of 466 items or shorter pad to 3
characters, otherwise 4 characters.
Typing numbers is less convenient than typing alphabetic characters (at
least if you're a blind typer). So before resorting to numbers, try to
generate IDs with alphabetic characters only. Only when the ID space
runs out, introduce numbers.
For other tags containing date values, try to print the relative
humanized date as well. If the tag does not contain a date in YYYY-MM-DD
value, it's normal value is printed.
ctrl-a: move cursor to the beginning
ctrl-e: move cursor to the end
ctrl-u: delete from the cursor back to the beginning
ctrl-k: delete from the cursor to the end
- completion box pops out for multiple candidates
- <Tab> and <Shift-Tab> will navigate through the list of candidates
- any other key than <Tab> and <Shift-Tab> will close the box
- completion box is glued to cursor and is trimmed to max 4 lines
- +projects, @contexts, dates and commands (with aliases) are supported
1.Rename completers
topydo.ui.prompt.TopydoCompleter is now topydo.ui.prompt.PromptCompleter
topydo.lib.Completer is now topydo.ui.CompleterBase
2. Reuse CompleterBase code in prompt completer.
3. Sort completion suggestions
4. Introduce completion of due: dates in column completer.
5. Store subcommands for completers in cache (via lru_cache).
The postpone subcommand would crash when postponing a todo item with an
invalid due date (e.g. due:2017-06-31).
When postponing, the due date serves as an offset. With an invalid due
date, no proper offset can be found. Instead of (silently) falling back
to today's due date, show an error instead.
Moreover, invalid creation/completion dates are also ignored.