code: def filter(self, p_todo_str, p_todo):
          
          if config().colors():
              p_todo_str = TopydoString(p_todo_str, p_todo)
  
              priority_color = config().priority_color(p_todo.priority())
  
              colors = [
                  (r'\B@(\S*\w)', AbstractColor.CONTEXT),
                  (r'\B\+(\S*\w)', AbstractColor.PROJECT),
                  (r'\b\S+:[^/\s]\S*\b', AbstractColor.META),
                  (r'(^|\s)(\w+:){1}(//\S+)', AbstractColor.LINK),
              ]
  
              # color by priority
              p_todo_str.set_color(0, priority_color)
  
              for pattern, color in colors:
                  for match in re.finditer(pattern, p_todo_str.data):
                      p_todo_str.set_color(match.start(), color)
                      p_todo_str.set_color(match.end(), priority_color)
  
              p_todo_str.append('', AbstractColor.NEUTRAL)
  
          return p_todo_str
docs: Applies the colors.