Я заметил, что когда я смотрю список TODO, я обычно делаю это только из верхней половины части, так как читаю сверху донизу, и к тому времени, когда я добираюсь до половины, я нахожу TODO, который можно было бы сделать. Поэтому мне было интересно, есть ли способ переместить список TODO, чтобы упорядочить рандомизацию?Рандомизировать список TODO?
ответ
Режим Org позволяет сортировать по клавише в ящике 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
позволяет вам определить функцию для сортировки:
Если 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))))
Для правильной сортировки функция сортировки должна возвращать тот же результат при сравнении двух объектов. Если вы производите его, сортировка никогда не закончится. – justinhj
Hm. Не могли бы вы подтвердить, что это работает? Кажется, он не меняет порядок на моем. Функция 'org-random-cmp' работает, как предполагалось. Кроме того, предполагается ли это рандомизировать порядок каждый раз, когда вы открываете орг-повестку? –
Вы имеете в виду функцию «org-sort» или вид повестки дня? Оба работают для меня. Представление повестки дня предназначено для рандомизации при каждом открытии повестки дня. – erikstokes
- 1. Как рандомизировать отсортированный список?
- 2. список ToDo для Redmine
- 3. список Todo в PHP
- 4. Базовый список ToDo, хранящий данные
- 5. Список Todo занимает 30 секунд.
- 6. Emberjs TODO-список. не может создать новый «todo»
- 7. Рандомизировать/перетасовать список/массив в Python?
- 8. Java: как рандомизировать список массивов без дубликатов
- 9. Рандомизировать строку и добавить в список
- 10. Как рандомизировать упорядоченный список с помощью JavaScript
- 11. Рандомизировать список элементов в массиве Powershell
- 12. Рандомизировать список элементов на основе каждого пользователя
- 13. угловой список js todo, не отображающий
- 14. Нет данных, поступающих с Firebase: Список Todo
- 15. VB.net: Пользовательский 'TODO: Список по интерфейсу
- 16. Emacs Org-Mode TODO Список Отсутствующие товары
- 17. Рекомендации по дизайну Mongodb - список todo
- 18. Как список TODO: в Ant выхода сборки
- 19. SVN + УПРАВЛЕНИЕ ПРОЕКТАМИ + WIKI + TODO СПИСОК
- 20. Выдавшая для Google Список ToDo (AuthToken, SecID)
- 21. Netbeans: Показать только список активных проектов ToDo
- 22. Немного более продвинутый список TODO, JavaScript
- 23. Попытка создать список todo с функцией удаления
- 24. Visual Studio TODO/Список задач, не отображающийся
- 25. IntelliJ IDEA: создать список TODO с помощью Todo-text и файла
- 26. Рандомизировать массив?
- 27. Рандомизировать массив
- 28. Рандомизировать генератор
- 29. Рандомизировать слова
- 30. Рандомизировать tictactoe
Почему бы не играть с 'орг-рода-entries' и отсортировать его в по-разному каждый раз в зависимости от вашего настроения? 'Mx describe-function RET org-sort-entries RET' – lawlist
@lawlist Я использую« контексты »из GTD для отображения различных повесток дня для разных ситуаций, но у меня есть одна основная повестка дня, которую я использую наиболее часто, независимо от контекста, и это тот список, который я хотел рандомизировать. Кроме того, я не даю много мета атрибутов для записей TODO, поэтому многие опции из 'org-sor-entries' на самом деле не работают для меня. –
В нижней части doc-строки говорится об использовании опций для '? F' и'? F' - то есть вы можете написать свои собственные функции сортировки (например, рандомизировать) и включить их в функциональность 'org -sort-entries'. Возможно, кто-то напишет это, если вам нужна помощь, и вы можете всегда предлагать щедрость через несколько дней, если никто не ответил. – lawlist