Сортировать смешанный список заголовков в режиме орг
У меня есть длинный список заголовков вorg-mode
:
* Tasks [/]
** TODO Foo
** TODO Bar
** DONE World
** DONE Abba
что я хочу отсортировать следующим образом:
* Tasks [/]
** TODO Bar
** TODO Foo
** DONE Abba
** DONE World
С участиемorg-sort-entries
Я могу либо получить
* Tasks [/]
** DONE Abba
** TODO Bar
** TODO Foo
** DONE World
(т.е. в алфавитном порядке), или
* Tasks [/]
** TODO Foo
** TODO Bar
** DONE World
** DONE Abba
(т.е. группировка по статусу).
Другими словами, я хочу отсортироватьTODO
иDONE
элементы в алфавитном порядке, но держать их в два блока. Как я мог достичь этого? Я хочу сохранить весь набор заголовков в одном поддереве!
Мне не удалось использовать предложения ниже. Поэтому я попытался использовать приведенные ниже советы, чтобы найти решение, которое мне нужно. Вот код, который у меня есть:
(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?
)
)
Моя идея состоит в том, чтобы отметить заголовки, которые помеченыTODO
и сортировать их по алфавиту, а затем сделать то же самое сDONE
Заголовки. Пока у меня это работает только дляTODO
«S ...