Mengurutkan judul dalam file ORG

10

Saya membuat catatan dalam file org-mode berukuran besar yang memiliki struktur berikut:

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

Saya ingin menyortir file sehingga semua pos dengan Amendahului pos dengan B, yang pada gilirannya mendahului pos dengan C, dan sebagainya. Apakah ada cara otomatis untuk melakukannya dengan mode-org?

jch
sumber
4
Apakah kamu sudah mencoba org-sort?
abo-abo
C-c ^dari ingatan (bisa jadi sesuatu yang serupa berakhir dengan ^, seperti C-x C-c ^dll.)
wvxvw

Jawaban:

13

Ada org-sortperintah tetapi Anda mungkin perlu mengubah struktur file Anda untuk mendapatkan hasil yang Anda inginkan (jika saya memahami pertanyaan dengan benar).

Gunakan org-sort( C-c ^) untuk mengurutkan entri dalam garis besar, baris dalam tabel, atau item dalam daftar. Misalnya dari tajuk, Anda dapat menelepon org-sortuntuk mengurutkan semua entri anak.

Dalam contoh Anda, Anda ingin mengurutkan entri tingkat atas dalam garis besar Anda, jadi pilih semua entri terlebih dahulu. Saat Anda menelepon, org-sortAnda akan diminta untuk mengurutkan: menurut abjad, berdasarkan prioritas, dan sebagainya.

Saya menduga dari contoh Anda bahwa hasil akhir yang Anda harapkan adalah:

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

Artinya, Anda mencari untuk mengurutkan berdasarkan abjad tetapi apakah huruf trailing diutamakan? Tidak ada jenis bawaan untuk itu. Jika Anda mengubah entri untuk menempatkan huruf semacam itu terlebih dahulu (mis. A, Toto) Maka jenis huruf normal akan berfungsi. Pilihan lain adalah memindahkan informasi itu ke properti di setiap item, lalu Anda bisa mengurutkan berdasarkan properti.

Seperti yang disarankan @nanny dalam komentar, org-sortdapat juga memanggil fungsi pengurutan khusus. Dengan begitu Anda dapat menggunakan file yang ada tanpa harus mengubah semua entri. Berikut adalah fungsi pengurutan yang menemukan teks judul saat ini dan menambahkan karakter terakhir ke awal sehingga lebih diutamakan. Anda akan membutuhkan sesuatu yang lebih kuat jika tajuk berita Anda tidak semuanya mengikuti pola yang tepat.

(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)))
glukas
sumber
1
Alternatif untuk mengubah file menggunakan [f]uncjenis penyortiran org-sortdan menulis fungsi untuk mengurutkan berdasarkan struktur yang ada.
pengasuh
Itu memecahkan masalah saya dengan cukup baik, setelah lulus cepat query-replace-regexpuntuk mengedit beberapa judul yang tidak secara ketat mengikuti format yang tepat. Jauh lebih mudah daripada mengonversi semua data saya ke properti.
jch
... atau Anda dapat memindahkannya ke tag, yaitu "* Toto: A:" lalu urutkan Cc ^ r TAGS
jtgd
1
Hanya untuk memberi tahu Anda bahwa saya memiliki masalah ini tepat setahun sekali, dan saya telah menggunakan solusi Anda lagi kemarin.
jch
0

Saya menempatkan berita utama dengan prioritas berbeda di mana saja dalam sebuah file, saya tidak peduli dengan pesanan. Kemudian saya melihat mereka diurutkan dengan tampilan agenda . Dengan menggunakan tag , tajuk utama yang diurutkan dari kategori nyata dilihat dengan tampilan agenda khusus .

Saya tahu itu bukan jawaban untuk cara mengurutkan berita utama dalam file , tetapi melihat berita utama dengan tampilan agenda selalu merupakan cara terbaik. Anda dapat memasukkan tajuk prioritas dengan cepat, tanpa khawatir tentang pesanan.

Adam Skobodzinski
sumber