Esiste un org-sort
comando, ma potrebbe essere necessario modificare la struttura del file per ottenere i risultati desiderati (se capisco correttamente la domanda).
Utilizzare org-sort
( C-c ^
) per ordinare le voci nella struttura, le righe in una tabella o gli elementi in un elenco. Ad esempio da un'intestazione è possibile chiamare org-sort
per ordinare tutte le voci figlio.
Nel tuo esempio desideri ordinare le voci di livello superiore nella struttura, quindi seleziona prima tutte le voci. Quando chiami org-sort
ti verrà chiesto come ordinare: in ordine alfabetico, per priorità e così via.
Immagino dal tuo esempio che il risultato finale che ti aspetti sia:
* Toto, A
Notes about Toto.
* Tutu, A
Notes about Tutu.
* Titi, C
Notes about Titi.
Cioè, stai cercando di ordinare in ordine alfabetico, ma la tua lettera finale ha la precedenza? Non esiste un ordinamento integrato per questo. Se hai modificato le voci per inserire prima quella lettera di ordinamento (ad es. A, Toto
), Allora un normale ordinamento alfabetico funzionerebbe. Un'altra opzione sarebbe quella di spostare tali informazioni in una proprietà su ciascun elemento, quindi è possibile ordinare per proprietà.
Come ha suggerito @nanny nei commenti, org-sort
puoi anche chiamare una funzione di ordinamento personalizzata. In questo modo è possibile utilizzare il file esistente senza dover modificare tutte le voci. Ecco una funzione di ordinamento che trova il testo del titolo corrente e aggiunge l'ultimo carattere all'inizio in modo che abbia la precedenza. Avrai bisogno di qualcosa di più robusto se i tuoi titoli non seguono tutti quel modello esatto.
(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)))
org-sort
?