Я заметил, что, когда я смотрю на список TODO, я обычно делаю дела только из верхней половины части, так как я читаю сверху вниз, и к тому времени, когда я дохожу до середины списка TODO, я нахожу TODO. это можно было сделать. Поэтому мне было интересно, есть ли способ перепутать список TODO, чтобы порядок был случайным?
Рандомизировать список TODO?
Ответы (2)
Как уже упоминалось org-sort
, давайте укажем функцию для сортировки:
Если SORTING-TYPE имеет значение ?f или ?F, то GETKEY-FUNC указывает вызываемую функцию с точкой в начале записи. Он должен возвращать либо строку, либо число, которое должно служить ключом сортировки для этой записи.
Как оказалось, random
— это функция, которая возвращает случайное число. Таким образом, M-x org-sort f random
будет рандомизировать порядок сортировки в файле org.
Однако вместо изменения файла вы можете использовать org-agenda
для просмотра задач в случайном порядке. Установив org-agenda-cmp-user-defined
, вы можете настроить порядок сортировки. Эта функция будет принимать два аргумента (записи повестки дня для сравнения) и должна возвращать -1,1 или 0 в зависимости от того, какая из записей "меньше". Вот такая функция:
(defun org-random-cmp (a b)
"Return -1,0 or 1 randomly"
(- (mod (random) 3) 1))
А вот повестка дня, которая показывает все пункты TODO в случайном порядке:
(add-to-list 'org-agenda-custom-commands
'("r" "All todo items in a random order"
alltodo ""
((org-agenda-cmp-user-defined #'org-random-cmp))))
org-random-cmp
работает по назначению. Кроме того, предполагается ли рандомизировать порядок каждый раз, когда вы открываете организационную повестку дня?
- person THIS USER NEEDS HELP; 05.05.2016
org-sort
или просмотр повестки дня? Оба работают для меня. Представление повестки дня предназначено для рандомизации каждый раз, когда вы открываете повестку дня.
- person erikstokes; 05.05.2016
Организационный режим позволяет вам сортировать по ключу в ящике PROPERTIES, поэтому один из способов сделать это — установить там случайный ключ сортировки в начале поиска. Следующий код делает именно это. После завершения сортировки удаляются ключи сортировки и удаляются пустые ящики свойств, оставляя все как есть.
(defun org-sort-entries-randomly()
(interactive)
(if (org-at-heading-p)
(progn
(setq start (point))
(org-end-of-subtree)
(while (> (point) start)
(if (org-at-heading-p)
(org-set-property "sort-key" (format "%d" (+ 10000 (random 10000)))))
(previous-line))
(org-sort-entries nil ?r nil nil "sort-key")
(goto-char start)
(org-end-of-subtree)
(while (> (point) start)
(if (org-at-heading-p)
(org-delete-property "sort-key" "PROPERTIES"))
(previous-line)))
(message "Not at heading")))
org-sort-entries
и каждый раз сортировать его по-разному в зависимости от настроения?M-x describe-function RET org-sort-entries RET
- person lawlist   schedule 22.04.2016org-sor-entries
мне не подходят. - person THIS USER NEEDS HELP   schedule 22.04.2016?f
и?F
, то есть вы можете написать свои собственные функции сортировки (например, рандомизировать) и включить их в функциональностьorg-sort-entries
. Возможно, кто-то напишет, если вам понадобится помощь, и вы всегда сможете предложить вознаграждение через несколько дней, если никто не ответил. - person lawlist   schedule 22.04.2016