A menudo tengo una lista como esta:
* 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
Me gustaría ordenarlo de acuerdo con la palabra de tarea 'TODO' primero. Luego, los elementos dentro del TODO ordenado me gustaría ordenar por prioridad. (sería bueno ordenar más por "Esfuerzo").
Y quiero decir que actualmente puedo hacer clic en el encabezado principal y ordenar a los hijos ya sea por prioridad o por palabra clave todo, pero no ambos.
¿Es posible ordenar por ambos como una estrategia de clasificación?
Actualmente tengo dos encabezados
* Tasks
** TODO [#A] meh
** TODO [#B] meh2
* Completed.
** DONE [#B] meh3.
Pero el problema con este enfoque es que tengo que barajar constantemente las tareas cuando las completo.
[EDITAR] ¿
Esto es algo similar a esto excepto que no pude entender su respuesta para transferirla a mis necesidades?
org-sort-entries
actuará en un encabezado principal para todos los subtítulos, o puede ordenar lo que está en una región seleccionada. Hay opciones interactivas para que pueda elegir. También puede usarlo mediante programación, y son posibles varios tipos: a menudo uso a, o, p, t (uno después del siguiente para lograr 4 niveles de criterios de clasificación). Por ejemplo, puede ordenar todo primero por alfabético, luego por palabras clave todo, luego por prioridad y luego por tiempo.org-refile-targets
algo así(setq org-refile-targets '((nil . (:maxlevel . 6))))
. Eso hará que losorg-mode
encabezados de los programas lleguen a una profundidad de 6 al volver a llenar. Puede consultar la documentación paraorg-refile-targets
obtener más información.Respuestas:
Sería genial si hubiera algo así con lo
org-agenda-sorting-stratagy
que funcionóorg-sort-entries
, pero no parece haberlo . Podemos fingirlo ya queorg-sort-entries
puede tomar un argumento que especifica una función que asigna una tecla (cadena o número) a cada encabezado, que se usará para ordenar las entradas cuando se proporcione el?f
tipo de ordenación. Todo lo que tenemos que hacer es obtener una cadena para las propiedades TODO y PRIORIDAD. El truco es que queremos ordenar la propiedad TODO por su posiciónorg-todo-keywords
, no alfabéticamente.M-x my/org-sort-entries
se ordenará por la palabra clave TODO y romperá los lazos con PRIORITY (org-default-priority
cuando no se da prioridad). Esto se romperá si tiene más de 1000 palabras clave TODO, lo cual es una buena razón para no hacerlo.fuente
todo-to-int
después de haber pegado mi respuesta. Ya está arreglado.Agregue lo siguiente a su archivo:
Y barajar se convierte en archivado
En lugar de ordenar las entradas, ¿qué tal una vista ordenada?
Restrinja al archivo actual con
<
. Puede marcar HECHO y archivar desde la vista ordenada.fuente
También puede definir una
org-agenda-cmp-user-defined
función y agregarlaorg-agenda-sorting-strategy
. Este es el que creé como ejemplo.fuente
Puede usar esta biblioteca hecha por mí: https://github.com/felipelalli/org-sort-tasks
Utiliza Merge Sort algo preguntando al usuario si una tarea A es más importante que B, y luego construye una lista ordenada.
fuente