mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Feature #934
- Feature #934, supports 'reserved.lines' to indicate a multi-line prompt for use in conjunction with 'limit:page' (thanks to Robert Gill). - Removed 'locale' from the taskrc.5 man page. - Added verbosity token 'sync'. - Fixed bug in size calculation for 'limit:page', but there is still one more. - Corrected unit test limit.t given the above fix.
This commit is contained in:
parent
9cbd729553
commit
c5ff24358c
11 changed files with 62 additions and 12 deletions
1
AUTHORS
1
AUTHORS
|
@ -156,4 +156,5 @@ suggestions:
|
|||
Rene Vergara
|
||||
Stéphane Pezennec
|
||||
Jim B
|
||||
Robert Gill
|
||||
|
||||
|
|
|
@ -3,10 +3,15 @@
|
|||
2.3.0 () -
|
||||
|
||||
Features
|
||||
+ Added Feature #934, support for 'reserved.lines' to accomodate multi-line
|
||||
shell prompts when used in conjunction with 'limit:page' (thanks to Robert
|
||||
Gill).
|
||||
+ Stores un-synched transactions in <data.location>/backlog.data.
|
||||
+ Adds a new "synchronize" command to sync data with a task server.
|
||||
+ Adds a new 'synchronize' command to sync data with a task server.
|
||||
+ Adds a new 'sync' verbosity token, which will reminds when a backlog builds
|
||||
up and needs a sync.
|
||||
|
||||
Bugs
|
||||
+
|
||||
+ Fixed bug so that 'limit:page' now considers footnote messages.
|
||||
|
||||
------ old releases ------------------------------
|
||||
|
|
|
@ -230,9 +230,9 @@ that you would see a smaller, more compact representation of the task, with no
|
|||
help text. Deprecated - use verbosity token 'edit'.
|
||||
|
||||
.TP
|
||||
.B locale=en-US.UTF8
|
||||
Locale to be used by Taskwarrior for synchronization with the task server. The
|
||||
default value is currently blank.
|
||||
.B reserved.lines=1
|
||||
This is the number of lines reserved at the bottom of the screen for the shell
|
||||
prompt. This is only referenced when 'limit:page' is used.
|
||||
|
||||
.SS MISCELLANEOUS
|
||||
|
||||
|
@ -258,6 +258,7 @@ control specific occasions when output is generated. This list may contain:
|
|||
edit Used the verbose template for the 'edit' command
|
||||
special Feedback when applying special tags
|
||||
project Feedback about project status changes
|
||||
sync Feedback about the need for sync
|
||||
|
||||
Note that the "on" setting is equivalent to all the tokens being specified,
|
||||
and the "nothing" setting is equivalent to none of the tokens being specified.
|
||||
|
@ -265,7 +266,7 @@ and the "nothing" setting is equivalent to none of the tokens being specified.
|
|||
Here are the shortcut equivalents:
|
||||
|
||||
verbose=on
|
||||
verbose=blank,header,footnote,label,new-id,affected,edit,special,project
|
||||
verbose=blank,header,footnote,label,new-id,affected,edit,special,project,sync
|
||||
|
||||
verbose=off
|
||||
verbose=blank,label,new-id,edit
|
||||
|
|
|
@ -76,13 +76,14 @@ std::string Config::_defaults =
|
|||
"avoidlastcolumn=no # Fixes Cygwin width problem\n"
|
||||
"hyphenate=on # Hyphenates lines wrapped on non-word-breaks\n"
|
||||
"#editor=vi # Preferred text editor\n"
|
||||
"reserved.lines=1 # Assume a 1-line prompt\n"
|
||||
"\n"
|
||||
"# Miscellaneous\n"
|
||||
"verbose=yes # Provide maximal feedback\n"
|
||||
"#verbose=no # Provide regular feedback\n"
|
||||
"#verbose=nothing # Provide no feedback\n"
|
||||
"# # Comma-separated list. May contain any subset of:\n"
|
||||
"#verbose=blank,header,footnote,label,new-id,affected,edit,special,project\n"
|
||||
"#verbose=blank,header,footnote,label,new-id,affected,edit,special,project,sync\n"
|
||||
"confirmation=yes # Confirmation on delete, big changes\n"
|
||||
"indent.annotation=2 # Indent spaces for annotations\n"
|
||||
"indent.report=0 # Indent spaces for whole report\n"
|
||||
|
|
|
@ -451,6 +451,9 @@ bool Context::color ()
|
|||
// rc.verbose=nothing Show the absolute minimum.
|
||||
// rc.verbose=one,two Show verbosity for 'one' and 'two' only.
|
||||
//
|
||||
// TODO This mechanism is clunky, and should slowly evolve into something more
|
||||
// logical and consistent. This should probably mean that 'nothing' should
|
||||
// take the place of '0'.
|
||||
bool Context::verbose (const std::string& token)
|
||||
{
|
||||
if (! verbosity.size ())
|
||||
|
@ -470,7 +473,8 @@ bool Context::verbose (const std::string& token)
|
|||
verbosity[0] != "affected" && //
|
||||
verbosity[0] != "edit" && //
|
||||
verbosity[0] != "special" && //
|
||||
verbosity[0] != "project") //
|
||||
verbosity[0] != "project" && //
|
||||
verbosity[0] != "sync") //
|
||||
{
|
||||
verbosity.clear ();
|
||||
|
||||
|
|
|
@ -145,9 +145,11 @@ int CmdCustom::execute (std::string& output)
|
|||
|
||||
// Adjust for fluff in the output.
|
||||
if (maxlines)
|
||||
maxlines -= (context.verbose ("blank") ? 1 : 0)
|
||||
+ table_header
|
||||
+ 1; // "X tasks shown ..."
|
||||
maxlines -= table_header
|
||||
+ (context.verbose ("blank") ? 1 : 0)
|
||||
+ (context.verbose ("footnote") ? context.footnotes.size () : 0)
|
||||
+ (context.verbose ("affected") ? 1 : 0)
|
||||
+ context.config.getInteger ("reserved.lines"); // For prompt, etc.
|
||||
|
||||
// Render.
|
||||
std::stringstream out;
|
||||
|
@ -183,6 +185,7 @@ int CmdCustom::execute (std::string& output)
|
|||
rc = 1;
|
||||
}
|
||||
|
||||
feedback_backlog ();
|
||||
context.tdb2.commit ();
|
||||
output = out.str ();
|
||||
return rc;
|
||||
|
|
|
@ -178,6 +178,7 @@ int CmdShow::execute (std::string& output)
|
|||
" recurrence.indicator"
|
||||
" recurrence.limit"
|
||||
" regex"
|
||||
" reserved.lines"
|
||||
" row.padding"
|
||||
" rule.precedence.color"
|
||||
" search.case.sensitive"
|
||||
|
|
|
@ -60,6 +60,9 @@ int CmdSync::execute (std::string& output)
|
|||
|
||||
// Obtain credentials.
|
||||
std::string credentials_string = context.config.get ("taskd.credentials");
|
||||
if (credentials_string == "")
|
||||
throw std::string (STRING_CMD_SYNC_BAD_CRED);
|
||||
|
||||
std::vector <std::string> credentials;
|
||||
split (credentials, credentials_string, "/");
|
||||
if (credentials.size () != 3)
|
||||
|
|
|
@ -415,6 +415,25 @@ void feedback_unblocked (const Task& task)
|
|||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
void feedback_backlog ()
|
||||
{
|
||||
if (context.config.get ("taskd.server") != "" &&
|
||||
context.verbose ("sync"))
|
||||
{
|
||||
std::vector <std::string> lines = context.tdb2.backlog.get_lines ();
|
||||
std::vector <std::string>::iterator line;
|
||||
for (line = lines.begin (); line != lines.end (); ++line)
|
||||
{
|
||||
if ((*line)[0] == '[')
|
||||
{
|
||||
context.footnote ("There are local changes. Sync required.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
std::string onProjectChange (Task& task, bool scope /* = true */)
|
||||
{
|
||||
|
|
|
@ -76,6 +76,7 @@ void feedback_affected (const std::string&, int);
|
|||
void feedback_affected (const std::string&, const Task&);
|
||||
void feedback_special_tags (const Task&, const std::string&);
|
||||
void feedback_unblocked (const Task&);
|
||||
void feedback_backlog ();
|
||||
std::string onProjectChange (Task&, bool scope = true);
|
||||
std::string onProjectChange (Task&, Task&);
|
||||
std::string onExpiration (Task&);
|
||||
|
|
13
test/limit.t
13
test/limit.t
|
@ -79,8 +79,19 @@ like ($output, qr/^30 tasks$/ms, 'limited to 0 - unlimited');
|
|||
$output = qx{../src/task rc:limit.rc ls limit:3 2>&1};
|
||||
like ($output, qr/^30 tasks, 3 shown$/ms, 'limited to 3');
|
||||
|
||||
# Default height is 24 lines:
|
||||
# - header
|
||||
# - blank
|
||||
# - labels
|
||||
# - underline
|
||||
# - (data)
|
||||
# - blank
|
||||
# - affected
|
||||
# - reserved.lines
|
||||
# ------------
|
||||
# = 17 lines
|
||||
$output = qx{../src/task rc:limit.rc ls limit:page 2>&1};
|
||||
like ($output, qr/^30 tasks, truncated to 18 lines$/ms, 'limited to page');
|
||||
like ($output, qr/^30 tasks, truncated to 17 lines$/ms, 'limited to page');
|
||||
|
||||
# Cleanup.
|
||||
unlink qw(pending.data completed.data undo.data backlog.data limit.rc);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue