org-mode – Ordenar encabezados en un archivo ORG

Pregunta:

Estoy tomando notas en un archivo grande en modo org que tiene la siguiente estructura:

* Toto, A
Notes about Toto.
* Titi, C
Notes about Titi.
* Tutu, A
Notes about Tutu.

Me gustaría ordenar el archivo para que todos los títulos con A precedan a los títulos con B , que a su vez preceden a los títulos con C , y así sucesivamente. ¿Existe una forma automatizada de hacer eso con el modo org?

Respuesta:

Hay un comando org-sort pero es posible que deba modificar la estructura de su archivo para obtener los resultados que desea (si entiendo la pregunta correctamente).

Use org-sort ( Cc ^ ) para ordenar entradas en el esquema, filas en una tabla o elementos en una lista. Por ejemplo, desde un encabezado puede llamar org-sort para ordenar todas las entradas secundarias.

En su ejemplo, desea ordenar las entradas de nivel superior en su esquema, así que seleccione todas las entradas primero. Cuando llame a org-sort se le preguntará cómo ordenar: alfabéticamente, por prioridad, etc.

Supongo por su ejemplo que el resultado final que espera es:

* Toto, A
Notes about Toto.
* Tutu, A
Notes about Tutu.
* Titi, C
Notes about Titi.

Es decir, está buscando ordenar alfabéticamente, pero ¿tiene prioridad esa letra final? No hay un tipo incorporado para eso. Si cambia las entradas para poner esa letra de clasificación primero (por ejemplo A, Toto ), entonces funcionaría una clasificación alfabética normal. Otra opción sería mover esa información a una propiedad en cada elemento, luego puede ordenar por propiedad.

Como @nanny ha sugerido en los comentarios, org-sort también puede llamar a una función de clasificación personalizada. De esa manera, puede usar su archivo existente sin tener que cambiar todas las entradas. Aquí hay una función de clasificación que busca el texto del título actual y agrega el último carácter al principio para que tenga prioridad. Necesitará algo más sólido si sus titulares no siguen ese patrón exacto.

(defun my-sort-last-letter ()
  (let ((text
         (plist-get
          (cadr (org-element-headline-parser (line-end-position)))
          :raw-value)))
    (concat (string (aref text (- (string-width text) 1))) text)))

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım