Classificar uma lista mista de títulos no modo organizacional

Eu tenho uma longa lista de títulos emorg-mode:

* Tasks [/]
** TODO Foo
** TODO Bar
** DONE World
** DONE Abba

que eu quero classificar da seguinte forma:

* Tasks [/]
** TODO Bar
** TODO Foo
** DONE Abba
** DONE World

Comorg-sort-entries Eu posso obter

* Tasks [/]
** DONE Abba
** TODO Bar
** TODO Foo
** DONE World

(ou seja, ordem alfabética) ou

* Tasks [/]
** TODO Foo
** TODO Bar
** DONE World
** DONE Abba

(ou seja, agrupamento de acordo com o status).

Em outras palavras, eu quero classificar oTODO e aDONE itens em ordem alfabética, mas mantenha-os em dois blocos. Como eu consegui isso? Quero manter todo o conjunto de títulos na mesma subárvore!

Editar:

Não consegui utilizar as sugestões abaixo. Então, tentei usar as dicas fornecidas abaixo para encontrar a solução necessária. Aqui está o código que tenho:

(defun drorata-sort-TODO-DONE-headings ()
  (interactive)
  (save-excursion
    ;; Sort according to the TODO/DONE keywords
    (org-sort-entries t ?o)
    ;; Now there is a block of TODO's and a block of DONE's
    ;; Mark the TODO's
    (next-line)
    (beginning-of-line)
    (set-mark-command nil)
    (search-forward-regexp "[*].* DONE" nil t)
    (beginning-of-line)
    ;; Sort the marked region (of TODO's) alphabetically
    (org-sort-entries t ?a)
    ;; Now its time to sort the DONE's
    (search-forward "[*].* DONE" nil t)
    (beginning-of-line)
    (set-mark-command nil)
    ;; How can I find all headings labeled with DONE in the current level?
    )
)

Minha idéia é marcar os títulos rotulados porTODO e classifique-os em ordem alfabética e faça o mesmo com oDONE títulos. Até agora, eu tenho que trabalhar apenas para oTODOé ...

questionAnswers(4)

yourAnswerToTheQuestion