Support for todo.txt priorities
The Freeplane add-on that syncs a GTD mind map with a todo.txt file
Status: Beta
Brought to you by:
haaihenkie
Feature: Support todo.txt priorities
In order to be able to use priorities
As a todo.txt user
I want GTD Sync to preserve all possible todo.txt priorities
# In previous GTD Sync versions priority (A) is already mapped to an icon in the
# GTD mind map. As a bonus feature priorities (B) and (C) are also mapped to
# icons. Priorities (D) to (Z) are stored at the beginning of the next action
# name.
# According to todo.txt rules completed actions do not have priorities, so
# priorities as an icon or in the next action name are removed when function
# complete action is used.
# To prevent inconsistencies, like actions having more than one priority, some
# rules are applied when creating next actions and during synchronisation:
# - if a next action has a priority icon and a priority in name, the priority
# in the name is removed
# - if a next action has more than one priority icon, all priority icons are
# removed except the one with the highest priority
# - if a next action has priority (A), (B) or (C) in its name, it will be
# removed and the corresponding icon will be added
@import
Scenario Outline: (A), (B) and (C) are imported as icons (*) , (2) and (3)
Given I added a new next action to todo.txt
And the next action has priority <priority>
And I have not defined a custom icon for this priority
When I run the Synchronise function
Then the next action should be created under node 'New' in the GTD mind map
And the next action node should have icon <icon>
And the next action name should not start with <priority>
Examples:
| priority | icon |
| (A) | 'bookmark' |
| (B) | 'full-2' |
| (C) | 'full-3' |
@import
Scenario Outline: (A), (B) and (C) are imported as custom icons
Given I added a new next action to todo.txt
And the next action has priority <priority>
And I have defined a custom icon under node <node>
When I run the Synchronise function
Then the next action should be created under node 'New' in the GTD mind map
And the next action node should have the custom icon added to node <node>
And the next action name should not start with <priority>
Examples:
| priority | node |
| (A) | 'Icon: Today' |
| (B) | 'Icon: Priority (B)' |
| (C) | 'Icon: Priority (C)' |
@import
Scenario: (D) to (Z) are imported in next action name
Given I added a new next action to todo.txt
And the next action has a priority in the range from (D) to (Z)
When I run the Synchronise function
Then the next action should be created under node 'New' in the GTD mind map
And the next action name should start with the priority from todo.txt
@import
Scenario Outline: A change to (A), (B) or (C) is imported
Given an existing next action in todo.txt
And I have changed its priority to <priority> since last synchronisation
And its priority uses a <icon> icon
And in the mind map it has <old-priority>
When I run the Synchronise function
Then the next action in the mind map should have the associated <icon> icon
And the next action name should not start with a priority
And the change in priority should be logged
Examples:
| priority | icon | old-priority |
| (A) | default | priority (B) or (C) |
| (B) | default | a priority in the range from (D) to (Z) |
| (C) | default | no priority |
| (A) | custom | a priority in the range from (D) to (Z) |
| (B) | custom | no priority |
| (C) | custom | priority (A) or (B) |
@import
Scenario Outline: A change to range (D) to (Z) is imported
Given an existing next action in todo.txt
And I have changed its priority to one in the range from (D) to (Z)
And in the mind map it has <old-priority>
When I run the Synchronise function
Then the next action name in the mind map should start with the priority
And the next action should not have an icon associated to a priority
And the change in priority should be logged
Examples:
| old-priority |
| priority (A), (B) or (C) |
| a priority in the range from (D) to (Z) |
| no priority |
@import
Scenario Outline: A removal of the priority is imported
Given an existing next action in todo.txt
And I have removed its priority since last synchronisation
And in the mind map it has <old-priority>
When I run the Synchronise function
Then the next action in the mind map should not have a priority icon
And the next action name should not start with a priority
And the change in priority should be logged
Examples:
| old-priority |
| priority (A), (B) or (C) |
| a priority in the range from (D) to (Z) |
@import
Scenario: Priority changed in both files to a different value, (A), (B) or (C)
Given an existing next action in todo.txt
And I have changed its priority to one in the range from (D) to (Z)
And it had no priority at last synchronisation
And in the mind map I have added one of the three priority icons to it
When I run the Synchronise function
Then the priority icon in the mind map should be unchanged
And the next action name should not start with a priority
And the change in priority should be logged
And a warning of conflicting changes in priority should be logged
@import
Scenario: Priority changed in both files to the same value, (A), (B) or (C)
Given an existing next action in todo.txt
And I have changed its priority to (A), (B) or (C)
And it had priority in the range from (D) to (Z) at last synchronisation
And in the mind map I have removed the priority from its name
And I have added the icon corresponding to the new priority in todo.txt
When I run the Synchronise function
Then the priority icon in the mind map should be unchanged
And the next action name should not start with a priority
And the change in priority should be logged
@import
Scenario: Priority changed in both files to a different value, (D) to (Z)
Given an existing next action in todo.txt
And I have removed its priority
And it had priority (A), (B) or (C) at last synchronisation
And in the mind map I have added a priority in the range from (D) to (Z)
And I have removed the priority icon
When I run the Synchronise function
Then the next action in the mind map should not have a priority icon
And the next action name should still start with the added priority
And the change in priority should be logged
And a warning of conflicting changes in priority should be logged
@import
Scenario: Priority changed in both files to the same value, (D) to (Z)
Given an existing next action in todo.txt
And I have changed its priority to one in the range from (D) to (Z)
And it had no priority at last synchronisation
And in the mind map I have added the same priority as in todo.txt
When I run the Synchronise function
Then the next action in the mind map should not have a priority icon
And the next action name should still start with the added priority
And the change in priority should be logged
@import
Scenario: Priority changed in both files to a different value, removed
Given an existing next action in todo.txt
And I have changed its priority to (A), (B) or (C)
And it had priority in the range from (D) to (Z) at last synchronisation
And in the mind map I have removed the priority from the name
When I run the Synchronise function
Then the next action in the mind map should not have a priority icon
And the next action name should still not start with a priority
And the change in priority should be logged
And a warning of conflicting changes in priority should be logged
@import
Scenario: Priority removed in both files
Given an existing next action in todo.txt
And I have removed its priority
And it had priority (A), (B) or (C) at last synchronisation
And in the mind map I have removed the priority icon
When I run the Synchronise function
Then the next action in the mind map should still not have a priority icon
And the next action name should not start with a priority
And the change in priority should be logged
# The following checks and corrections take place during synchronisation, after
# import and before export. In addition the functions Create next action and
# Complete action trigger the same checks and corrections.
@checks
Scenario Outline: Remove priority when completing a next action
Given I have selected a next action in the mind map
And the next action has a <priority>
When I run the Complete action function
Then the next action node should have the 'Done' icon
And the next action node should have attribute Done with current date
And the <priority> should have been removed
Examples:
| priority |
| priority icon |
| priority at the start of its name |
@checks
Scenario Outline: Remove priority from done task during synchronisation
Given a next action with the 'Done' icon
And it has attribute Done with a date
And it has a <priority>
When I run the Synchronise function
Then the next action node should still have the 'Done' icon
And it should still have attribute Done with a unchanged date
And the <priority> should have been removed
And a warning should be logged that the priority has been removed
Examples:
| priority |
| priority icon |
| priority at the start of its name |
@checks
Scenario: Remove priorities when completing a next action
Given I have selected a next action in the mind map
And it has multiple priority icons
And it has a priority at the start of its name
When I run the Complete action function
Then the next action node should have the 'Done' icon
And the next action node should have attribute Done with current date
And its priority icons should have been removed
And its priority at the start of its name should have been removed
@checks
Scenario: Remove priorities from done task during synchronisation
Given a next action with the 'Done' icon
And it has attribute Done with a date
And it has multiple priority icons
And it has a priority at the start of its name
When I run the Synchronise function
Then the next action node should still have the 'Done' icon
And it should still have attribute Done with a unchanged date
And its priority icons should have been removed
And its priority at the start of its name should have been removed
And a warning should be logged that the priorities have been removed
@checks
Scenario: Remove priorities when completing a done action
Given I have selected a done action in the mind map
And it has multiple priority icons
And it has a priority at the start of its name
When I run the Complete action function
Then the next action node should still have the 'Done' icon
And it should still have attribute Done with a unchanged date
And its priority icons should have been removed
And its priority at the start of its name should have been removed
And a warning should be displayed that the priorities have been removed
@checks
Scenario Outline: Priority icon and in name when creating a next action
Given I have selected a <status> action in the mind map
And it has a priority icon
And it has a priority at the start of its name
When I run the Create next action function
Then the next action node should have the 'Next action' icon
And it should have no attribute Done
And its priority icon should have remained
And its priority at the start of its name should have been removed
And a warning should be displayed that priority has been removed from name
Examples:
| status |
| completed |
| next |
@checks
Scenario Outline: Multiple priority icons when creating a next action
Given I have selected a <status> action in the mind map
And it has multiple priority icons
When I run the Create next action function
Then the next action node should have the 'Next action' icon
And it should have no attribute Done
And it should only have the icon with the highest priority
And a warning should be displayed that a priority icon has been removed
Examples:
| status |
| completed |
| next |
@checks
Scenario Outline: Priority from text to icon when creating a next action
Given I have selected a <status> action in the mind map
And it has a name starting with (A), (B) or (C)
When I run the Create next action function
Then the next action node should have the 'Next action' icon
And it should have no attribute Done
And its priority should have been removed from the name
And an icon of the same priority should have been added to the node
Examples:
| status |
| completed |
| next |
@checks
Scenario: Priority icon and in name when synchronising
Given a next action in the mind map
And it has a priority icon
And it has a priority at the start of its name
When I run the Synchronise function
Then the next action node should have the 'Next action' icon
And it should have no attribute Done
And its priority icon should have remained
And its priority at the start of its name should have been removed
And a warning should be logged that priority has been removed from name
@checks
Scenario: Multiple priority icons when synchronising
Given a next action in the mind map
And it has multiple priority icons
When I run the Synchronise function
Then the next action node should have the 'Next action' icon
And it should have no attribute Done
And it should only have the icon with the highest priority
And a warning should be logged that a priority icon has been removed
@checks
Scenario: Priority from text to icon when synchronising
Given a next action in the mind map
And it has a name starting with (A), (B) or (C)
When I run the Synchronise function
Then the next action node should have the 'Next action' icon
And it should have no attribute Done
And its priority should have been removed from the name
And an icon of the same priority should have been added to the node
# In the synchronisation process the export scenarios follow after the import
# and checks scenarios. The export generates a new todo.txt file from the
# current mind map and overwritest the old todo.txt file. The export is the same
# for all next actions, whether they are unchanged, changed in the mind map,
# changed by the import from todo.txt or changed by the executed checks. So for
# simplicity the import and checks scenarios describe how the situation should
# be in the mind map before export and not what should be in the todo.txt file
# after synchronisation. If the following export scenarios are OK, then it
# automatically means the export to todo.txt for all previous scenarios is also
# OK. There is also an export of completed action to done.txt. There will be no
# priorities in this export and it will be according to feature #20.
@export
Scenario Outline: icons (*) , (2) and (3) are exported as (A), (B) and (C)
Given a next action in the mind map
And the next action has icon <icon>
And I have not defined a custom icon for this priority
When I run the Synchronise function
Then the next action should be exported to todo.txt
And it should start with priority <priority>
And its creation date should follow its priority
Examples:
| icon | priority |
| 'bookmark' | (A) |
| 'full-2' | (B) |
| 'full-3' | (C) |
@export
Scenario Outline: custom icons are exported as (A), (B) and (C)
Given a next action in the mind map
And the next action has the icon defined under node <node>
When I run the Synchronise function
Then the next action should be exported to todo.txt
And it should start with priority <priority>
And its creation date should follow its priority
Examples:
| node | priority |
| 'Icon: Today' | (A) |
| 'Icon: Priority (B)' | (B) |
| 'Icon: Priority (C)' | (C) |
@export
Scenario: (D) to (Z) in next action name are exported
Given a next action in the mind map
And its name starts with a priority in the range from (D) to (Z)
When I run the Synchronise function
Then the next action should be exported to todo.txt
And it should start with the priority in the range from (D) to (Z)
And its creation date should follow its priority
Though assigning priorities is not part of GTD, it is part of the todo.txt format. Visualising (A), (B) and (C) meets the user request with regard to urgency and importance in these posts: [159f5d25#606f] and [717ceb59#6d21]. According to several time management methods you organize your tasks as follows, in categories A, B, C and D or quadrants 1, 2, 3 and 4:
Related
Discussion: link to projects when re-arranging
Discussion: today icon