У меня часто есть такой список:
* Main heading
** TODO [#A] Make world better
** TODO [#B] Make Emacs better
** TODO [#B] Customize emacs
** DONE [#C] some task
** TODO [#A] Launch rocket to mars
Я хотел бы сначала отсортировать его в соответствии с заданием «TODO». Затем элементы внутри отсортированного TODO я хотел бы отсортировать по приоритету. (тогда было бы неплохо продолжить сортировку по "Усилию").
И я имею в виду, что в настоящее время я могу щелкнуть по главному заголовку и отсортировать детей уже по приоритету или по ключевому слову todo, но не обоим.
Возможна ли сортировка по обоим направлениям как стратегия сортировки?
В настоящее время у меня есть два заголовка
* Tasks
** TODO [#A] meh
** TODO [#B] meh2
* Completed.
** DONE [#B] meh3.
Но проблема с этим подходом состоит в том, что я должен постоянно перемешивать задачи, когда выполняю их.
[EDIT]
Это похоже на это, за исключением того, что я не мог понять его ответ, чтобы передать его для моих нужд?
org-sort-entries
будет действовать как на главный заголовок для всех подзаголовков, так и может сортировать то, что находится в выбранной области. Есть интерактивные варианты для вас на выбор. Вы также можете программно использовать его, и возможны несколько сортировок - я часто использую a, o, p, t (один за другим, чтобы выполнить 4 уровня критериев сортировки). Например, вы можете отсортировать все сначала по алфавиту, затем по ключевым словам todo, затем по приоритету, а затем по времени.org-refile-targets
что-то вроде(setq org-refile-targets '((nil . (:maxlevel . 6))))
. Это сделаетorg-mode
показ заголовков до 6 глубины при повторной заправке. Вы можете проверить документацию дляorg-refile-targets
получения дополнительной информации.Ответы:
Было бы здорово, если бы что-то подобное
org-agenda-sorting-stratagy
работалоorg-sort-entries
, но, похоже, нет. Мы можем подделать его, посколькуorg-sort-entries
можем принимать аргумент, определяющий функцию, присваивающую ключ (строку или число) каждому заголовку, который будет использоваться для сортировки записей, когда?f
задан тип сортировки. Все, что нам нужно сделать, это получить строку для свойств TODO и PRIORITY. Хитрость в том, что мы хотим отсортировать свойство TODO по его положениюorg-todo-keywords
, а не по алфавиту.M-x my/org-sort-entries
сортирует по ключевому слову TODO и разрывает связи с PRIORITY (используется,org-default-priority
когда приоритет не задан). Это сломается, если у вас будет более 1000 ключевых слов TODO, что является хорошей причиной, чтобы этого не делать.источник
todo-to-int
после того, как вставил в свой ответ. Это сейчас исправлено.Добавьте следующее в ваш файл:
И тасование становится архивированием
Вместо того, чтобы сортировать записи, как насчет отсортированного представления?
Ограничьте его текущим файлом с помощью
<
. Вы можете пометить ГОТОВО и архивировать в отсортированном виде.источник
Вы также можете определить
org-agenda-cmp-user-defined
функцию и добавить ее вorg-agenda-sorting-strategy
. Это тот, который я создал в качестве примера.источник
Вы можете использовать эту библиотеку, сделанную мной: https://github.com/felipelalli/org-sort-tasks
Он использует алгоритм сортировки слиянием, спрашивая пользователя, является ли задача A более важной, чем B, а затем создает отсортированный список.
источник