diff --git a/ChangeLog b/ChangeLog index ecafb7733..4e58efcde 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,11 +3,13 @@ 2.2.0 () Features + + New helper command '_aliases' for autocompletion purposes. + Stop consider new tasks after quitting a bulk change. + Removed deprecated 'fg:' and 'bg:' attributes. + The 'diagnostics' command now reports libuuid details. Bugs + + Fixed bug #1043, where aliases were not recognized by bash autocompletion. + Fixed bug #1038, which prints blank lines with bulk changes and when the verbose attributes does not specify it. Lines do a better separation between each changes also. diff --git a/NEWS b/NEWS index 7ea25adfc..51df33def 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,8 @@ New Features in taskwarrior 2.2.0 + - Bash autocompletion now works with aliases. + - Deprectated 'fg' and 'bg' attributes removed. Any residual use of those will appear as orphaned UDAs. @@ -9,7 +11,7 @@ New Features in taskwarrior 2.2.0 New commands in taskwarrior 2.2.0 - - + - New '_aliases' helper command lists aliases for completion purposes. New configuration options in taskwarrior 2.2.0 diff --git a/doc/man/task.1.in b/doc/man/task.1.in index d04d8819d..0ee3f5efe 100644 --- a/doc/man/task.1.in +++ b/doc/man/task.1.in @@ -467,6 +467,10 @@ Shows the taskwarrior version number. .SH HELPER SUBCOMMANDS +.TP +.B task _aliases +Generates a list of all aliases, for autocompletion purposes. + .TP .B task _columns Displays only a list of supported columns. diff --git a/scripts/bash/task.sh b/scripts/bash/task.sh index 10ea6eb21..b33da07e9 100644 --- a/scripts/bash/task.sh +++ b/scripts/bash/task.sh @@ -88,7 +88,8 @@ _task() # echo "prev='$prev'" # echo "prev2='$prev2'" - opts="$(task _commands) $(task _ids) $(task _columns)" + commands_aliases=$(echo $(task _commands; task _aliases) | tr " " "\n"|sort|tr "\n" " ") + opts="$commands_aliases $(task _ids) $(task _columns)" case "${prev}" in :) diff --git a/src/commands/CMakeLists.txt b/src/commands/CMakeLists.txt index bf7c8beff..166f1a566 100644 --- a/src/commands/CMakeLists.txt +++ b/src/commands/CMakeLists.txt @@ -7,6 +7,7 @@ include_directories (${CMAKE_SOURCE_DIR} set (commands_SRCS Command.cpp Command.h CmdAdd.cpp CmdAdd.h + CmdAliases.cpp CmdAliases.h CmdAnnotate.cpp CmdAnnotate.h CmdAppend.cpp CmdAppend.h CmdBurndown.cpp CmdBurndown.h diff --git a/src/commands/CmdAliases.cpp b/src/commands/CmdAliases.cpp new file mode 100644 index 000000000..c90c125f7 --- /dev/null +++ b/src/commands/CmdAliases.cpp @@ -0,0 +1,72 @@ +//////////////////////////////////////////////////////////////////////////////// +// taskwarrior - a command line task list manager. +// +// Copyright 2006-2012, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#define L10N // Localization complete. + +#include +#include +#include +#include +#include +#include +#include + +extern Context context; + +//////////////////////////////////////////////////////////////////////////////// +CmdCompletionAliases::CmdCompletionAliases () +{ + _keyword = "_aliases"; + _usage = "task _aliases"; + _description = STRING_CMD_ALIASES_USAGE; + _read_only = true; + _displays_id = false; +} + +//////////////////////////////////////////////////////////////////////////////// +int CmdCompletionAliases::execute (std::string& output) +{ + // Get a list of all aliases. + std::vector aliases; + + std::map ::iterator it; + for (it = context.aliases.begin (); it != context.aliases.end (); ++it) + aliases.push_back (it->first); + + // Sort alphabetically. + std::sort (aliases.begin (), aliases.end ()); + + std::stringstream out; + std::vector ::iterator a; + for (a = aliases.begin (); a != aliases.end (); ++a) + out << *a << "\n"; + + output = out.str (); + return 0; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/commands/CmdAliases.h b/src/commands/CmdAliases.h new file mode 100644 index 000000000..c957095c8 --- /dev/null +++ b/src/commands/CmdAliases.h @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////////////////////////// +// taskwarrior - a command line task list manager. +// +// Copyright 2006-2012, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDED_CMDALIASES +#define INCLUDED_CMDALIASES +#define L10N // Localization complete. + +#include +#include + +class CmdCompletionAliases : public Command +{ +public: + CmdCompletionAliases (); + int execute (std::string&); +}; + +#endif +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/commands/Command.cpp b/src/commands/Command.cpp index 2db5c3c13..28b665abf 100644 --- a/src/commands/Command.cpp +++ b/src/commands/Command.cpp @@ -41,6 +41,7 @@ #include #include +#include #include #include #include @@ -111,6 +112,7 @@ void Command::factory (std::map & all) c = new CmdCalendar (); all[c->keyword ()] = c; c = new CmdColor (); all[c->keyword ()] = c; c = new CmdColumns (); all[c->keyword ()] = c; + c = new CmdCompletionAliases (); all[c->keyword ()] = c; c = new CmdCompletionColumns (); all[c->keyword ()] = c; c = new CmdCompletionCommands (); all[c->keyword ()] = c; c = new CmdCompletionConfig (); all[c->keyword ()] = c; diff --git a/src/en-US.h b/src/en-US.h index cbb0a7772..9e5d2d1c4 100644 --- a/src/en-US.h +++ b/src/en-US.h @@ -443,6 +443,7 @@ #define STRING_CMD_PULL_NOT_DIR "The uri '{1}' is not a directory. Did you forget a trailing '/'?" #define STRING_CMD_HCOMMANDS_USAGE "Generates a list of all commands, for autocompletion purposes" #define STRING_CMD_ZSHCOMMANDS_USAGE "Generates a list of all commands, for zsh autocompletion purposes" +#define STRING_CMD_ALIASES_USAGE "Generates a list of all aliases, for autocompletion purposes" #define STRING_CMD_INSTALL_USAGE "Installs extensions and external scripts" #define STRING_CMD_MODIFY_USAGE1 "Modifies the existing task with provided arguments."