         (insert-file-contents-literally file nil 0 bound)
         (+org--get-property name))
     (+org--get-property name bound)))
+
+;;;###autoload
+(defun +org-get-todo-keywords-for (keyword)
+  "TODO"
+  (when keyword
+    (cl-loop for (type . keyword-spec) in org-todo-keywords
+             for keywords = (mapcar (lambda (x) (if (string-match "^\\([^(]+\\)(" x)
+                                               (match-string 1 x)
+                                             x))
+                                    keyword-spec)
+             if (eq type 'sequence)
+             if (member keyword keywords)
+             return keywords)))
 
 
 ;;

                  (insert "\n")
                  (if (= level 1) (insert "\n")))))
             (when-let* ((todo-keyword (org-element-property :todo-keyword context)))
               (org-todo (or (get-text-property 0 'org-todo-head todo-keyword)
                             'todo)))))

          (t (user-error "Not a valid list, heading or table")))

      (`headline
       (cond ((org-element-property :todo-type context)
              (org-todo
               (if (eq (org-element-property :todo-type context) 'done)
                   (or (car (+org-get-todo-keywords-for (org-element-property :todo-keyword context)))
                       'todo)
                 'done)))
             ((string= "ARCHIVE" (car-safe (org-get-tags)))
              (org-force-cycle-archived))
             (t
