Repeating Things Done

One of of the perennial questions that comes up when using ResultsManager, or almost any personal productivity system for that matter, is how to handle with repeating items. Many repeating items (e.g. daily exercise, weekly review, etc) are important items that you want to “put in front of the door” to develop good GTD habits, yet they don’t necessarily belong on the hard-landscape of your calendar.

In the past, the best practice for addressing this problem in ResultsManager has been to reset the task dates manually after each completion, while remembering not to actually mark the task complete. The GyroQ “dit”,”diw”,”dim” tags in the Tag Library introduced a way to automated this, while also logging the previous completion to a log map.

After recently converting the related “mtc” (Mark Task Complete) tag to a MindManager SAX basic macro (“Logging Things Done (faster)“) there was a need to update the repeating task tags as the log map name had changed. Rather than keep these tags or write separate macros for each purpose, it occurred to me that we could instead add category labels to repeating tasks themselves to indicate their repeat status.

The latest version of the “Mark Task Complete” macro in the macro library has been updated to do just that. Add a label below to the category field of the activity, and let the macro take care of the rest!

Repeating Tasks

This strategy has a number of advantages:

  1. It combines four previous GyroQ tags into one macro that can be assigned to the topic context menu (click-right access) and to the topic menu (shortcut access). It can also remain in GyroQ as “mtc”, but it otherwise frees up there GyroQ slots – sometimes I wonder if the GyroQ 20 tag limit is a Godsend in that it stimulates some creativity.
  2. It eliminates the need to think about what type of task it is when processing it — the task itself knows. You just “mark it complete”, and it takes care of the rest.
  3. It eliminates the risk of inadvertently marking the task complete for good. The macro knows it is a repeating task and won’t mark it done.
  4. It enables more precise frequencies as well additional frequencies to be added. Often if you are updating your lists after the fact, you need to push out a task 4-6 days rather than the “weekly” 7 days that “diw” would bump it forward, so you had to do it manually.

The table below lists the available repeat frequencies that can be assigned to the “category” field of an activity. The “bidaily” is a two day repeat, good for things like exercise reminders. The weekday keywords utilize equations developed for “MindReader” to push the due date to the next occurrence of that day (e.g. Take out the trash Friday).

Handling the “endofmonth” keyword is tricky. On the one hand you want to be able to mark something done in the last few days of the month and have it due at the end of next month. On the other hand, if you mark it done in the 1st few days of the month (for last month), then you want it due “this month”. The macro handles this by changing the behavior on the 21st of the month. If you are that far behind on your previous month’s task don’t blame the macro :-).

Available Repeat Frequencies


The above seems like plenty for now. It might be handy to have “quarterly” and “endofquarter”, but I won’t try to come up with those equations at this hour. Note that the macro is not case sensitive so Daily or daily is fine.

You can download “mark tasks complete” macro or paste it into your macro editor and save from there if it just displays in the browser. Put it in a “My Maps\AO” directory for lack of a better place.

I’d recommend assigning it to the topic-context menu and labeling it as “Set Activity Complete and Log”. It incorporates the “set activity complete” ResultsManager macro and works from either a dashboard or a raw map. If you like to use the “alt-c-v” keyboard shortcut, you can substitute this macro for that.

Note that the macro adds a separate “check box” icon to non-repeating tasks it has marked complete and logged. This can help you remember if you have logged it done or just checked the box manually. You can always log it done even if there task itself is already marked complete.


  1. Mike Wilkerson said,

    March 5, 2007 @ 1:44 pm

    I just downloaded the MindReader kit. Looks amazing! Unfortunately, it kept failing during the ‘mri’ script. I looked at the GyroQ sequence for it, and for starters, there were two ‘repeat’ blocks for creating map keywords. And in one of the blocks, there was a missing preceding tick mark in the statement following the map:open: command. And in the other (if memory serves), there was a missing tick mark at the end of the same statement. The effect was that when I would cancel out of the dialog, GyroActivator would complain that it couldn’t open the map, and the maps name was always some partial piece of the caption string from the map:open command. Once I made those tweaks to the sequence, it worked great!

  2. Mike Wilkerson said,

    March 5, 2007 @ 2:15 pm

    I notice that with the MindReader tags installed, when I type “q” followed by a space in the GyroQ dialog, GyroQ jumps to the “q” tag, making it active, and resetting the dialog input to empty. So basically, a more convenient way to switch the tag context.

    It’s been for a lack of that kind of convenience that my usage of GyroQ has been mostly confined to a single, default tag. It’s too convenient to hit Alt-T and try to switch to another tag.

    So how can I get this to work for my tags? Is there some GyroQ magic that I can’t see any of the help or config settings?

  3. admin said,

    March 5, 2007 @ 2:55 pm

    Sorry about the “mri” typos Mike — I sometimes fall down in the Quality Control department. That is a new section of code that I tested in “mra” (which lets existing users add new links) but neglected to test when I added it into “mri” (twice apparently). I’ll fix it tonight.

    The “secret” trick on rapid tag toggling in GyroQ is to add three spaces after then initial short name. If you do that, you can toggle to the tag by just typing the short name. Make sure you pick names that won’t come up routinely as part of a task (e.g. my use of “map” for the destination-on-the-fly tag was probably not a good choice). See Nick Tipler’s video from recent newsletter for more info (“A secret revealed”).

  4. ActivityOwner said,

    March 5, 2007 @ 8:18 pm

    Corrected versions of the “mindreader” and “mri” packed text and code have been uploaded.

  5. ActivityOwner said,

    March 5, 2007 @ 8:24 pm

    Here is the link to the video from Gyronix on using the short name to quickly select tags:

  6. Dale said,

    March 5, 2007 @ 8:38 pm

    The screenshot shows that “Reconcile Card Monthly” has a category of “monthly” and that this category will let this macro know to advance the due date by one month.

    When I set my “Haircut” task complete with the macro, it didn’t advance the due date.

    So I checked the code. Looks like the code is looking for the string “monthlyrepeat” in the category field instead of “monthly,” so I changed the category to “monthlyrepeat” instead of “monthly” and it worked. FYI just in case anyone else has the same issue.

    The line of code in question:
    ElseIf InStr(cats,”monthlyrepeat”) Then

  7. Dale said,

    March 5, 2007 @ 8:39 pm

    I forgot to say “Great work once again,” this is a very cool macro!

  8. ActivityOwner said,

    March 5, 2007 @ 9:22 pm

    Yikes — Another embarrassing quality control failure. The problem here was that I initially set the repeating tasks up as “weeklyrepeat”, “monthlyrepeat”, etc. but found I was mistakenly putting the categories in as “repeatweekly”, etc. So, at the last minute I changed them to be simply “weekly”, “monthly”, etc., which makes a lot more sense.

    Somehow didn’t get that revision uploaded to the site. Its up there now. Sorry about that. I find the only way I get this stuff right is if I log out as “me” and login a fresh account and walk through the setup.

    Thanks for the catch!

  9. Hans said,

    March 22, 2007 @ 9:52 am

    I’ve got an updated version to duplicate repatings tasks if you put “duplicate” in the categories as well.
    I’m going to need this for some sort of task logging I’m building. I’ll send it to you by mail.

  10. ActivityOwner said,

    March 23, 2007 @ 9:12 pm

    Hans has got some interesting stuff cooking. It is not quite ready to merge into site version of mark_task_complete.mmbas, but stay tuned.

    Note that a new version was uploaded recently that allows the repeat items to be checked off from a dashboard. The previous version lacked the “send changes” macro call to communicate the new dates back to the underlying maps.

  11. ActivityOwner said,

    April 1, 2007 @ 2:35 pm

    I noticed the “fix” above for making the script work from a dashboard for repeating tasks wasn’t working correctly (put the macro in wrong spot in the script). A new version has been uploaded.

    I also changed the “code” for tasks that repeat every two days from “bidaily” to “everytwo”. The bidaily text string was getting recognized as “daily”.

    I’m trying to consolidate background information on the script on the new wiki page:

  12. Cristina Ramos said,

    June 18, 2007 @ 10:45 pm

    I’m new to ResultsManager and GyroQ.
    I’ve been googling for a while for information on implementing GTD with MindMapping.That’s why I ended up here.
    I have MindManager Pro 7 and I downloaded trial of the Gyronix products.

    One of the things I wanted was precisely to address routines. Until now I couldn’t find the answer. But this macro does it! Thanks!

    I’ve been testing MindReader macros and tags. I must say that it took me a while to understand how the tags worked, but I eventualy saw the light.

    In relation to this macro, I installed it easily and it is working properly. But while I was testing the frequency categories, I noticed that “endofquarter” doesn’t work for me. I rechecked my spelling and it was right, so I don’t know what it is.

    Although I have lots to learn yet, I find MindReader absolutely great. Thanks!

  13. ActivityOwner said,

    June 19, 2007 @ 12:02 am

    Hi Cristina — You unearthed a bug in the “endofquarter” code. Sorry about that. Looks like it lost a couple of lines of code somewhere along the way. I’ve uploaded a revised version. Give it a try.

    I am also finding the “routine” support this script provide very helpful. Ever time I’m marking a random task complete I ask myself it is actually a “repeating task”? I find many things are. For some I create the next version manually (e.g. “Holidays 2007”). In other cases adding the right category entry and leaving the task in place is the right approach.

  14. Cristina Ramos said,

    June 19, 2007 @ 5:37 pm

    Thanks for your fast answer!
    It’s working perfectly.

  15. Don Callihan said,

    July 2, 2007 @ 5:50 pm

    If possible, could ActivityOwner or someone with a desire to help newcomers edit the wiki for this topic with enough detail so that a novice could install the “mark task complete” macro and, at the same time, understand the concept of using the macro editor. I find that what may be obvious to you may not be so clear to those of us who are not so computer savy and still want to use MM/RM to get things done. If someone could provide the step-by-step instructions on the wiki page, I’m willing to add screenshots of how it would look in MM7.

    Thanks to each of you who contribute to this helpful resource.

    Don Callihan

  16. ActivityOwner said,

    July 4, 2007 @ 9:21 am

    Good suggestion Don — The beauty of GyroQ is that installation of a new tag is pretty simple with just a pasting of the packed text into the gyroQ dialog box. Macros require a few steps and add choices as to where to store them and what to name them. I hadn’t realized the gap in the documentation for this tool. It started as a tag and migrated over time to a macro for improved speed without the documentation coming along for the ride.

    I’ll try to add something more to the wiki, but in the meantime, this link provides some good background:

    I’m considering zipping up the main macros from the site along with a gyroQ.ini file with all the main tags so users could get everything installed or upgraded at once.

  17. George Wyner said,

    July 12, 2007 @ 5:45 pm

    Very useful macro.

    I am trying to enable the ‘add completion notes’ for raw maps. I tried setting sacrm=True in the macro file.

    I created a subactivity of a project and tried marking it complete using Alt C,v and a completion note was added to the map. I repeated the process using the mark_task_complete macro (which I have mapped to AltC,l) and no note was added.

    Is logging working for others? (in which case this must be something about my environment)

    Is the correct way to change the options to change the True/False value of the option settings in the code (as I did)?


    George Wyner

  18. George Wyner said,

    July 12, 2007 @ 5:53 pm

    One very minor suggestion for the code (aesthetics only):

    Instead of first testing

    If isdb

    and then testing

    If (Not isdb) And sacrm

    You can do a single test

    If isdb Or sacrm

    This avoids repeating the same MacroRun statement twice with the risk of having them not match.

    Again, very minor point and does not change the functionality.

    George Wyner

    p.s. if there is a better place for posting these very minor comments please let me know (don’t want to detract from the more substantive discussion).

  19. ActivityOwner said,

    July 12, 2007 @ 7:11 pm

    Thanks George – great suggestion. That will allow it to not work twice as fast :-).

    I will have a look at bug tonight. Perhaps a bug crept in with v7.

    Comments are best place for this stuff. The only problem is that for tools that evolve over time there are usually several posts so things do not have a clear home.

    I have a forum setup for the site if needed. Would people find that useful?

  20. ActivityOwner said,

    July 12, 2007 @ 11:17 pm

    George — I implemented your improvement suggestion and found the bug that was preventing the notes from being added. The “problem” was that ResultsManager is smart enough to recognize if a task has already been marked complete and avoid adding redundant completion notes to your projects. Because the macro was setting complete =100% before calling the macro, RM avoided adding the notes. I had this turned off in my implementation so I didn’t notice that this issue had crept in at some point.

    An updated version is available in the macro library on the wiki here:

    You can see the code changes in the wiki revision history:

    Thanks again,


  21. Rennie Schmid said,

    November 4, 2007 @ 2:56 am

    Hi again Activity Owner,

    I have been experimenting with the latest “repeating things done” changes and have run into some problems.

    In Gyroq
    If I enter: q Call Robyn for birthday [@yearly by #25/5/2008], an activity is correctly created.

    Then if I enter d followed by Enter key the task in completed and moved to the “Completed” floating topic. However, the task fails to repeat and the dates change to today’s date.

    I have also noticed that completing tasks after the original set date sets the next year task to the current day (not the fixed day). For example, preparing a document for 25th April, but completing it by 20th April repeats the task on 20th April on the next year.

    I have tried to find an explanation for the new “advance” feature but found nothing.

    I really like this set of macros and tags, but must say it is a little frustrating trying to work out the changes.



  22. ActivityOwner said,

    November 4, 2007 @ 8:25 am

    Hi Rennie —

    For your example task, you would want to type

    q Call Robyn for birthday [~eachyear #25/5/2008#]

    The repeating code is stored in the category field (~category) rather than the context (@context) field. That’s why the macro isn’t seeing your example as a repeating task.

    For activities that repeat on a fixed date (like birthdays and bill payments), eachweek, eachmonth, and eachyear are used. For activities that repeat relative to when you did them last (like haircuts and lawn mowing), “weekly”, “monthly”, “quarterly”, and “yearly” are used.

    Note that until last night there was a bug in the new “move to floating completed topic” portion of the macro that caused it to move repeating tasks to the completed branch, even if they were coded correctly. I hadn’t noticed as I usually mark repeating tasks done on the dashboard. It is fixed now.

    “Advance” is a new MIndReader keyword that is the opposite of “delay” that allows you to pull forward the start/due date of a future task using “m”. I just uploaded last evening and hadn’t edited it into the wiki yet.

  23. Rennie Schmid said,

    November 5, 2007 @ 6:04 am

    Thanks Activity Owner,

    Have you considered adding a fortnightly or eachfortnight to allow for activities that must be done every two weeks? For example, a pay officer in Australia could pay employees every two weeks.

    I am considering writing a guide to using MindReader and make it available to you. Would that help you or hinder you?


  24. ActivityOwner said,

    November 5, 2007 @ 8:08 am

    Per your suggestion I added every2weeks, each2weeks, fortnightly, and everyfortnight to mark_task_complete.mmbas and uploaded to the wiki.

    Documentation help is welcome. The easiest way would be for you to create an account for yourself on the wiki and just start adding/editing from here:

    Note that “Mark Task Complete” is a separate program covered here:

  25. Darren Syzling said,

    February 14, 2008 @ 5:13 am

    I was playing with the mark task complete macro and wondered how people were using this. If I navigate to the map containing my task and mark it complete this all seems to work fine, the task is logged along with the completed date. However I often mark tasks complete from my dashboard – I’d rather not have to rebuild my dash to see the tasks in my daily actions that have been completed.

    When I use the macro from my dashboard, it doesn’t produce the same results as running from the context of the hosting map. The task isn’t removed from the original map and it maintains a link back to the original task from the completed log map – so hyperlinks on the activity are not copied across (since you can still link). Is this by design, or are there technical reasons?

    I wondered how people were using this macro in practice? I like the idea I just don’t seem to be working in way which really gels with the macro which made me wonder whether I’m missing something?


  26. Marco van Laerhoven said,

    March 1, 2008 @ 4:32 pm

    It looks like this has now been changed. I noticed the following when marking a repeating task complete with the macro:
    – within the source map: repeat is set and “completed task” moved to the Completed topic –> this is as expected
    – a task that already has a repeat icon (so was processed with the macro before), when closed from the dashboard: remains in dashboard with extra tickmark, and in the source map is handled the same way as above –> this is as expected
    – a NEW task with the correct categories, when processed from the dashboard: remains in dashboard with extra tickmark, and in the source map is MOVED to the completed category –> this is not as I expected, I’d like to see this the same as the item before …

    Hope this helps …

  27. ActivityOwner said,

    March 1, 2008 @ 9:08 pm

    Good catch Marco — Its a relatively unusual situation so hadn’t thought about it. I uploaded a corrected version to the wiki.

  28. Marco van Laerhoven said,

    April 3, 2008 @ 5:02 pm

    suggestion for improvement:

    I have projects that repeat yearly (e.g. my taxreturn). These projects are defined as lists and for each of them I have defined the steps to perform to complete the project. Of course I don’t want to reinvent the wheel next time, so also the tasks in the project have a yearly repeat defined.
    When I then mark the first task as done, the next occurrence is correctly calculated but RM doesn’t pick up the next task because the first task is still there (be it in the far future).

    The way around this is if I physically move the first task to the bottom of the list.
    As long as this is done consistently, the reflects the order in which the sub-branches need to be completed perfectly.

    Is this somethin other people also use yearly projects? If so, my suggestion is that the MTC-macro checks to see if the parent is a (list) and if so it moves the task that is being marked as completed at the bottom of the list of its peers (like a cut and paste)

    If not, I’d be interested to know how other people use these repeating projects … maybe I’m over-complicating things :)

  29. ActivityOwner said,

    April 3, 2008 @ 9:34 pm

    Hi Marco — I think this might be a bit complex to implement relative to the frequency of use. There would need to be some type of category keyword on the parent list task to indicate this is what you wanted to do. It would also have to coexist with other mtc options and features.

    What I tend to do for “yearly” projects is create the subsequent year’s task or project at the completion of the previous year, set the start date, and link it into the map central so that it comes up. Examples include holiday shopping, major birthdays, taxes, house maintenance tasks, etc. I think for your example you could probably select all the task and mark them incomplete as once. If you were operating in this mode you would want to set the “movetocomplete” option to false.

  30. Curtis N. Bingham said,

    November 8, 2008 @ 4:27 pm

    The newest version of mtc pops up a sax basic message indicating it has finished the markup. Is this something that can be easily turned off?

  31. H. I .Vestbo said,

    February 5, 2010 @ 4:22 pm

    Thank you for all you excellent work!

    When I run the Repeating Things Done macro on Catalyst maps I get a runtime error. Anyone else using Catalyst (Mindjet Connect) maps?

  32. H. I .Vestbo said,

    February 5, 2010 @ 4:26 pm

    Forgot to mention that the macro seems to do everyting it should in the map on Catalyst…

  33. ActivityOwner said,

    February 5, 2010 @ 6:33 pm

    Thanks — I am always glad to hear this stuff gets ongoing use. Thanks for reporting the bug. I hadn’t been using “mark task complete” in catalyst recently. There was a line in there trying to save the map, but catalyst maps can’t be saved.

    It is fixed now in the latest setup.exe and in the source code on the wiki.

    Hans and I used mindjet connect to collaborate on developing the setup.exe and I bought a 2-user account for my wife’s business to play with for this year. For personal cross-computer use I’ve been using dropbox rather than mjc maps.

  34. Scott said,

    January 31, 2014 @ 12:07 pm

    I’ve just upgraded to MM14 and am wondering if there is way to get the ‘mark task complete’ to install for this version of MM?


RSS feed for comments on this post · TrackBack URI

Leave a Comment

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.