Merge branch '2.3.0' into 2.4.0

Conflicts:
	AUTHORS
	CMakeLists.txt
	NEWS
	src/A3.cpp
	src/CMakeLists.txt
	src/Config.cpp
	src/Duration.cpp
	src/Duration.h
	src/Nibbler.cpp
	src/Nibbler.h
	src/RX.cpp
	src/RX.h
	src/columns/ColDate.cpp
	src/columns/ColScheduled.cpp
	src/commands/Command.cpp
	src/legacy.cpp
	src/utf8.cpp
	src/utf8.h
	test/CMakeLists.txt
	test/bug.mergedeps.t.postponed
	test/duration.t.cpp
	test/merge.duplicates.t
	test/merge.simple_duplication.t
	test/merge.t
	test/nibbler.t.cpp
	test/roundtrip.t
	test/rx.t.cpp
	test/utf8.t.cpp
This commit is contained in:
Paul Beckingham
2014-01-07 19:10:03 -05:00
550 changed files with 6129 additions and 2976 deletions

View File

@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////////////////////////
// taskwarrior - a command line task list manager.
//
// Copyright 2006-2013, Paul Beckingham, Federico Hernandez.
// Copyright 2006-2014, 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
@@ -116,69 +116,71 @@
#define STRING_A3_ID_AFTER_HYPHEN "Unrecognized ID after hyphen."
#define STRING_A3_RANGE_INVERTED "Inverted range 'high-low' instead of 'low-high'"
#define STRING_A3_UUID_AFTER_COMMA "Unrecognized UUID after comma."
#define STRING_A3_ZERO_ID "'{1}' is not a valid ID."
// Color
#define STRING_COLOR_UNRECOGNIZED "The color '{1}' is not recognized."
// columns/Col*
#define STRING_COLUMN_BAD_NAME "Unrecognized column name '{1}'."
#define STRING_COLUMN_BAD_FORMAT "Unrecognized column format '{1}.{2}'"
#define STRING_COLUMN_LABEL_TASKS "Tasks"
#define STRING_COLUMN_LABEL_DEP "Depends"
#define STRING_COLUMN_LABEL_DEP_S "Dep"
#define STRING_COLUMN_BAD_NAME "Nom de colonne non reconnu '{1}'."
#define STRING_COLUMN_BAD_FORMAT "Format de colonne non reconnu '{1}.{2}'"
#define STRING_COLUMN_LABEL_TASKS "Tâches"
#define STRING_COLUMN_LABEL_DEP "Dépends de"
#define STRING_COLUMN_LABEL_DEP_S "Dép"
#define STRING_COLUMN_LABEL_DESC "Description"
#define STRING_COLUMN_LABEL_DUE "Due"
#define STRING_COLUMN_LABEL_END "End"
#define STRING_COLUMN_LABEL_ENTERED "Entered"
#define STRING_COLUMN_LABEL_COUNT "Count"
#define STRING_COLUMN_LABEL_COMPLETE "Completed"
#define STRING_COLUMN_LABEL_MOD "Modified"
#define STRING_COLUMN_LABEL_ADDED "Added"
#define STRING_COLUMN_LABEL_DUE "Échéance"
#define STRING_COLUMN_LABEL_END "Fin"
#define STRING_COLUMN_LABEL_ENTERED "Entrée"
#define STRING_COLUMN_LABEL_COUNT "Temps restant"
#define STRING_COLUMN_LABEL_COMPLETE "Complétée"
#define STRING_COLUMN_LABEL_MOD "Modifiée"
#define STRING_COLUMN_LABEL_ADDED "Ajoutée"
#define STRING_COLUMN_LABEL_AGE "Age"
#define STRING_COLUMN_LABEL_ID "ID"
#define STRING_COLUMN_LABEL_PRI "Pri"
#define STRING_COLUMN_LABEL_PRIORITY "Priority"
#define STRING_COLUMN_LABEL_PROJECT "Project"
#define STRING_COLUMN_LABEL_PRIORITY "Priorité"
#define STRING_COLUMN_LABEL_PROJECT "Projet"
#define STRING_COLUMN_LABEL_UNTIL "Until"
#define STRING_COLUMN_LABEL_WAIT "Wait"
#define STRING_COLUMN_LABEL_WAITING "Waiting until"
#define STRING_COLUMN_LABEL_RECUR "Recur"
#define STRING_COLUMN_LABEL_RECUR_L "Recurrence"
#define STRING_COLUMN_LABEL_START "Start"
#define STRING_COLUMN_LABEL_STARTED "Started"
#define STRING_COLUMN_LABEL_WAIT "Attente"
#define STRING_COLUMN_LABEL_WAITING "En attente jusquau"
#define STRING_COLUMN_LABEL_RECUR "Récur"
#define STRING_COLUMN_LABEL_RECUR_L "Récurrence"
#define STRING_COLUMN_LABEL_START "Début"
#define STRING_COLUMN_LABEL_STARTED "Débutée"
#define STRING_COLUMN_LABEL_ACTIVE "A"
#define STRING_COLUMN_LABEL_STATUS "Status"
#define STRING_COLUMN_LABEL_STATUS "Statut"
#define STRING_COLUMN_LABEL_STAT "St"
#define STRING_COLUMN_LABEL_STAT_PE "Pending"
#define STRING_COLUMN_LABEL_STAT_CO "Completed"
#define STRING_COLUMN_LABEL_STAT_DE "Deleted"
#define STRING_COLUMN_LABEL_STAT_WA "Waiting"
#define STRING_COLUMN_LABEL_STAT_RE "Recurring"
#define STRING_COLUMN_LABEL_STAT_PE "Prévue"
#define STRING_COLUMN_LABEL_STAT_CO "Complétée"
#define STRING_COLUMN_LABEL_STAT_DE "Supprimée"
#define STRING_COLUMN_LABEL_STAT_WA "En attente"
#define STRING_COLUMN_LABEL_STAT_RE "Récurrente"
#define STRING_COLUMN_LABEL_STAT_P "P"
#define STRING_COLUMN_LABEL_STAT_C "C"
#define STRING_COLUMN_LABEL_STAT_D "D"
#define STRING_COLUMN_LABEL_STAT_W "W"
#define STRING_COLUMN_LABEL_STAT_D "S"
#define STRING_COLUMN_LABEL_STAT_W "A"
#define STRING_COLUMN_LABEL_STAT_R "R"
#define STRING_COLUMN_LABEL_TAGS "Tags"
#define STRING_COLUMN_LABEL_TAG "Tag"
#define STRING_COLUMN_LABEL_TAGS "Étiquettes"
#define STRING_COLUMN_LABEL_TAG "Étiquette"
#define STRING_COLUMN_LABEL_UUID "UUID"
#define STRING_COLUMN_LABEL_URGENCY "Urgency"
#define STRING_COLUMN_LABEL_NAME "Name"
#define STRING_COLUMN_LABEL_VALUE "Value"
#define STRING_COLUMN_LABEL_MASK "Mask"
#define STRING_COLUMN_LABEL_MASK_IDX "Mask Index"
#define STRING_COLUMN_LABEL_PARENT "Parent task"
#define STRING_COLUMN_LABEL_URGENCY "Urgence"
#define STRING_COLUMN_LABEL_NAME "Nom"
#define STRING_COLUMN_LABEL_VALUE "Valeur"
#define STRING_COLUMN_LABEL_MASK "Masque"
#define STRING_COLUMN_LABEL_MASK_IDX "Index de masque"
#define STRING_COLUMN_LABEL_PARENT "Tâche mère"
#define STRING_COLUMN_LABEL_DATE "Date"
#define STRING_COLUMN_LABEL_COLUMN "Columns"
#define STRING_COLUMN_LABEL_STYLES "Supported Formats"
#define STRING_COLUMN_LABEL_EXAMPLES "Example"
#define STRING_COLUMN_LABEL_SCHED "Scheduled"
#define STRING_COLUMN_LABEL_UDA "Name"
#define STRING_COLUMN_LABEL_COLUMN "Colonnes"
#define STRING_COLUMN_LABEL_STYLES "Formats supportés"
#define STRING_COLUMN_LABEL_EXAMPLES "Exemple"
#define STRING_COLUMN_LABEL_SCHED "Planifiée"
#define STRING_COLUMN_LABEL_UDA "Nom"
#define STRING_COLUMN_LABEL_TYPE "Type"
#define STRING_COLUMN_LABEL_LABEL "Label"
#define STRING_COLUMN_LABEL_VALUES "Allowed Values"
#define STRING_COLUMN_LABEL_UDACOUNT "Usage Count"
#define STRING_COLUMN_LABEL_ORPHAN "Orphan UDA"
#define STRING_COLUMN_LABEL_LABEL "Étiquette"
#define STRING_COLUMN_LABEL_DEFAULT "Défaut"
#define STRING_COLUMN_LABEL_VALUES "Valeurs autorisées"
#define STRING_COLUMN_LABEL_UDACOUNT "Compte dutilisation"
#define STRING_COLUMN_LABEL_ORPHAN "ADU orphelins"
// Column Examples
#define STRING_COLUMN_EXAMPLES_TAGS "home @chore next"
@@ -306,6 +308,8 @@
#define STRING_CMD_SUMMARY_COMPLETE "Complete"
#define STRING_CMD_SUMMARY_NONE "(none)"
#define STRING_CMD_COUNT_USAGE "Counts matching tasks"
#define STRING_CMD_GET_USAGE "DOM Accessor"
#define STRING_CMD_GET_NO_DOM "No DOM reference specified."
#define STRING_CMD_UDAS_NO "No UDAs defined."
#define STRING_CMD_UDAS_SUMMARY "{1} UDA defined"
@@ -394,15 +398,16 @@
#define STRING_CMD_IMPORT_SUMMARY "Imported {1} tasks."
#define STRING_CMD_IMPORT_NOFILE "You must specify a file to import."
#define STRING_CMD_IMPORT_FILE "Importing '{1}'"
#define STRING_CMD_IMPORT_NOT_JSON "Not a JSON object: {1}"
#define STRING_CMD_IMPORT_NO_DESC "Annotation is missing a description: {1}"
#define STRING_CMD_IMPORT_NO_ENTRY "Annotation is missing an entry date: {1}"
#define STRING_TASK_NO_DESC "Annotation is missing a description: {1}"
#define STRING_TASK_NO_ENTRY "Annotation is missing an entry date: {1}"
#define STRING_CMD_SHELL_HELP1 "Enter any task command (such as 'list'), or hit 'Enter'."
#define STRING_CMD_SHELL_HELP2 "There is no need to include the 'task' command itself."
#define STRING_CMD_SHELL_HELP3 "Enter 'quit' (or 'bye', 'exit') to end the session."
#define STRING_CMD_SYNC_USAGE "Synchronizes data with the Task Server"
#define STRING_CMD_SYNC_NO_SERVER "Task Server is not configured."
#define STRING_CMD_SYNC_BAD_CRED "Task Server credentials malformed."
#define STRING_CMD_SYNC_USAGE "Synchronizes data with the Taskserver"
#define STRING_CMD_SYNC_NO_SERVER "Taskserver is not configured."
#define STRING_CMD_SYNC_BAD_CRED "Taskserver credentials malformed."
#define STRING_CMD_SYNC_BAD_CERT "Taskserver certificate missing."
#define STRING_CMD_SYNC_BAD_KEY "Taskserver key missing."
#define STRING_CMD_SYNC_ADD " add {1} '{2}'"
#define STRING_CMD_SYNC_MOD "modify {1} '{2}'"
#define STRING_CMD_SYNC_PROGRESS "Syncing with {1}"
@@ -411,10 +416,20 @@
#define STRING_CMD_SYNC_SUCCESS2 "Sync successful. {1} changes downloaded."
#define STRING_CMD_SYNC_SUCCESS3 "Sync successful. {1} changes uploaded, {2} changes downloaded."
#define STRING_CMD_SYNC_SUCCESS_NOP "Sync successful. No changes."
#define STRING_CMD_SYNC_FAIL_ACCOUNT "Sync failed. Either your credentials are incorrect, or your Task Server account is not enabled."
#define STRING_CMD_SYNC_FAIL_ERROR "Sync failed. The Task Server returned error: {1} {2}"
#define STRING_CMD_SYNC_FAIL_CONNECT "Sync failed. Could not connect to the Task Server."
#define STRING_CMD_SYNC_FAIL_ACCOUNT "Sync failed. Either your credentials are incorrect, or your Taskserver account is not enabled."
#define STRING_CMD_SYNC_FAIL_ERROR "Sync failed. The Taskserver returned error: {1} {2}"
#define STRING_CMD_SYNC_FAIL_CONNECT "Sync failed. Could not connect to the Taskserver."
#define STRING_CMD_SYNC_BAD_SERVER "Sync failed. Malformed configuration setting '{1}'"
#define STRING_CMD_SYNC_NO_TLS "Taskwarrior was built without GnuTLS support. Sync is not available."
#define STRING_CMD_SYNC_INIT "Please confirm that you wish to upload all your pending tasks to the Taskserver"
#define STRING_CMD_SYNC_NO_INIT "Taskwarrior will not proceed with first-time sync initialization."
#define STRING_CMD_SYNC_RELOCATE0 "The server account has been relocated. Please update your configuration using:"
#define STRING_CMD_SYNC_RELOCATE1 "task config taskd.server {1}"
#define STRING_CMD_SYNC_BAD_CA "CA certificate not found."
#define STRING_CMD_SYNC_CONNECT "Could not connect to {1} {2}"
#define STRING_CMD_SYNC_HANDSHAKE "Handshake failed. {1}"
#define STRING_CMD_SYNC_NOMERGE "Task push/pull/merge is configured, deprecated, and does not work with 'sync'."
#define STRING_CMD_SYNC_TRUST_CA "You should either provide a CA certificate or override verification, but not both."
#define STRING_CMD_DIAG_USAGE "Platform, build and environment details"
#define STRING_CMD_DIAG_PLATFORM "Platform"
#define STRING_CMD_DIAG_UNKNOWN "<unknown>"
@@ -431,8 +446,6 @@
#define STRING_CMD_DIAG_CONFIG "Configuration"
#define STRING_CMD_DIAG_EXTERNAL "External Utilities"
#define STRING_CMD_DIAG_TESTS "Tests"
#define STRING_CMD_DIAG_UUID_GOOD "1000 unique UUIDs generated."
#define STRING_CMD_DIAG_UUID_BAD "Failed - duplicate UUID at iteration {1}"
#define STRING_CMD_DIAG_UUID_SCAN "Scanned {1} tasks for duplicate UUIDs:"
#define STRING_CMD_DIAG_UUID_DUP "Found duplicate {1}"
#define STRING_CMD_DIAG_UUID_NO_DUP "No duplicates found"
@@ -550,51 +563,50 @@
#define STRING_CONTEXT_SHADOW_UPDATE "[Shadow file '{1}' updated.]"
// Date
#define STRING_DATE_INVALID_FORMAT "'{1}' is not a valid date in the '{2}' format."
#define STRING_DATE_BAD_WEEKSTART "The 'weekstart' configuration variable may only contain 'Sunday' or 'Monday'."
#define STRING_DATE_TOO_MUCH "The date is too far into the future."
#define STRING_DATE_INVALID_FORMAT "'{1}' n'est pas une date au format '{2}'."
#define STRING_DATE_BAD_WEEKSTART "La variable de configuration 'weekstart' ne peut contenir que 'dimanche' ou 'lundi'."
#define STRING_DATE_JANUARY_LONG "january"
#define STRING_DATE_FEBRUARY_LONG "february"
#define STRING_DATE_MARCH_LONG "march"
#define STRING_DATE_APRIL_LONG "april"
#define STRING_DATE_MAY_LONG "may"
#define STRING_DATE_JUNE_LONG "june"
#define STRING_DATE_JULY_LONG "july"
#define STRING_DATE_AUGUST_LONG "august"
#define STRING_DATE_SEPTEMBER_LONG "september"
#define STRING_DATE_OCTOBER_LONG "october"
#define STRING_DATE_NOVEMBER_LONG "november"
#define STRING_DATE_DECEMBER_LONG "december"
#define STRING_DATE_JANUARY_LONG "janvier"
#define STRING_DATE_FEBRUARY_LONG "février"
#define STRING_DATE_MARCH_LONG "mars"
#define STRING_DATE_APRIL_LONG "avril"
#define STRING_DATE_MAY_LONG "mai"
#define STRING_DATE_JUNE_LONG "juin"
#define STRING_DATE_JULY_LONG "juillet"
#define STRING_DATE_AUGUST_LONG "at"
#define STRING_DATE_SEPTEMBER_LONG "septembre"
#define STRING_DATE_OCTOBER_LONG "octobre"
#define STRING_DATE_NOVEMBER_LONG "novembre"
#define STRING_DATE_DECEMBER_LONG "décembre"
#define STRING_DATE_JANUARY_SHORT "jan"
#define STRING_DATE_FEBRUARY_SHORT "feb"
#define STRING_DATE_FEBRUARY_SHORT "fév"
#define STRING_DATE_MARCH_SHORT "mar"
#define STRING_DATE_APRIL_SHORT "apr"
#define STRING_DATE_MAY_SHORT "may"
#define STRING_DATE_APRIL_SHORT "avr"
#define STRING_DATE_MAY_SHORT "mai"
#define STRING_DATE_JUNE_SHORT "jun"
#define STRING_DATE_JULY_SHORT "jul"
#define STRING_DATE_AUGUST_SHORT "aug"
#define STRING_DATE_AUGUST_SHORT "a"
#define STRING_DATE_SEPTEMBER_SHORT "sep"
#define STRING_DATE_OCTOBER_SHORT "oct"
#define STRING_DATE_NOVEMBER_SHORT "nov"
#define STRING_DATE_DECEMBER_SHORT "dec"
#define STRING_DATE_DECEMBER_SHORT "déc"
#define STRING_DATE_SUNDAY_LONG "sunday"
#define STRING_DATE_MONDAY_LONG "monday"
#define STRING_DATE_TUESDAY_LONG "tuesday"
#define STRING_DATE_WEDNESDAY_LONG "wednesday"
#define STRING_DATE_THURSDAY_LONG "thursday"
#define STRING_DATE_FRIDAY_LONG "friday"
#define STRING_DATE_SATURDAY_LONG "saturday"
#define STRING_DATE_SUNDAY_LONG "dimanche"
#define STRING_DATE_MONDAY_LONG "lundi"
#define STRING_DATE_TUESDAY_LONG "mardi"
#define STRING_DATE_WEDNESDAY_LONG "mercredi"
#define STRING_DATE_THURSDAY_LONG "jeudi"
#define STRING_DATE_FRIDAY_LONG "vendredi"
#define STRING_DATE_SATURDAY_LONG "samedi"
#define STRING_DATE_SUNDAY_SHORT "sun"
#define STRING_DATE_MONDAY_SHORT "mon"
#define STRING_DATE_TUESDAY_SHORT "tue"
#define STRING_DATE_WEDNESDAY_SHORT "wed"
#define STRING_DATE_THURSDAY_SHORT "thu"
#define STRING_DATE_FRIDAY_SHORT "fri"
#define STRING_DATE_SATURDAY_SHORT "sat"
#define STRING_DATE_SUNDAY_SHORT "dim"
#define STRING_DATE_MONDAY_SHORT "lun"
#define STRING_DATE_TUESDAY_SHORT "mar"
#define STRING_DATE_WEDNESDAY_SHORT "mer"
#define STRING_DATE_THURSDAY_SHORT "jeu"
#define STRING_DATE_FRIDAY_SHORT "ven"
#define STRING_DATE_SATURDAY_SHORT "sam"
// dependency
#define STRING_DEPEND_BLOCKED "Task {1} is blocked by:"
@@ -688,7 +700,6 @@
// TODO Move each of these to appropriate section.
#define STRING_ERROR_PREFIX "Error: "
#define STRING_UNKNOWN_ERROR "Unknown error."
#define STRING_NO_HOME "Could not read home directory from the passwd file."
#define STRING_TRIVIAL_INPUT "You must specify a command or a task to modify."
#define STRING_ASSUME_INFO "No command specified - assuming 'information'."
#define STRING_INFINITE_LOOP "Terminated substitution because more than {1} changes were made - infinite loop protection."
@@ -698,6 +709,7 @@
#define STRING_UDA_COLLISION "The UDA named '{1}' is the same as a core attribute, and is not permitted."
#define STRING_INVALID_MOD "The '{1}' attribute does not allow a value of '{2}'."
#define STRING_INVALID_SORT_COL "The '{1}' column is not a valid sort field."
#define STRING_TLS_INIT_FAIL "Error initializing TLS."
// Feedback
#define STRING_FEEDBACK_NO_TASKS "No tasks."
@@ -750,9 +762,6 @@
#define STRING_JSON_MISSING_OPEN "Error: expected '{' or '[' at position {1}"
#define STRING_JSON_EXTRA_CHARACTERS "Error: extra characters found at position {1}"
// Legacy
#define STRING_LEGACY_FEATURE "Note: the '{1}' feature is deprecated."
// Record
#define STRING_RECORD_EMPTY "Empty record in input."
#define STRING_RECORD_JUNK_AT_EOL "Unrecognized characters at end of line."
@@ -764,7 +773,6 @@
#define STRING_CMD_SHOW_NONE "No matching configuration variables."
#define STRING_CMD_SHOW_UNREC "Your .taskrc file contains these unrecognized variables:"
#define STRING_CMD_SHOW_DIFFER "Some of your .taskrc variables differ from the default values."
#define STRING_CMD_SHOW_HOOKS "Your .taskrc file contains these missing or unreadable hook scripts:"
#define STRING_CMD_SHOW_EMPTY "Configuration error: .taskrc contains no entries."
#define STRING_CMD_SHOW_DIFFER_COLOR "These are highlighted in {1} above."
#define STRING_CMD_SHOW_CONFIG_ERROR "Configuration error: {1} contains an unrecognized value '{2}'."
@@ -776,6 +784,7 @@
// Task
#define STRING_TASK_NO_FF1 "Taskwarrior no longer supports file format 1, originally used between 27 November 2006 and 31 December 2007."
#define STRING_TASK_NO_FF2 "Taskwarrior no longer supports file format 2, originally used between 1 January 2008 and 12 April 2009."
#define STRING_TASK_PARSE_ANNO_BRACK "Missing annotation brackets."
#define STRING_TASK_PARSE_ATT_BRACK "Missing attribute brackets."
#define STRING_TASK_PARSE_TAG_BRACK "Missing tag brackets."
@@ -826,8 +835,7 @@
#define STRING_TDB2_REVERTED "Modified task reverted."
#define STRING_TDB2_REMOVED "Task removed."
#define STRING_TDB2_UNDO_COMPLETE "Undo complete."
#define STRING_TDB2_MISSING_TASK "Task with UUID {1} not found in data."
#define STRING_TDB2_UNDO_IMPOSSIBLE "No undo possible."
#define STRING_TDB2_UNDO_SYNCED "Cannot undo change because the task was already synced. Modify the task instead."
// text
// A comma-separated list of commands is appended.