Wildcard dalam file org-agenda-

10

Aku punya folder basis proyek, ~/prj, yang di dalamnya saya memiliki banyak proyek-proyek individu, 2014_prj1, 2014_prj2, ..., di dalam yang saya miliki, antara lain, sebuah docfolder. Layoutnya terlihat seperti ini:

~/prj
~/prj/2014_prj1
~/prj/2014_prj1/README.org
~/prj/2014_prj1/data
~/prj/2014_prj1/doc
~/prj/2014_prj2
~/prj/2014_prj2/README.org
~/prj/2014_prj2/data
~/prj/2014_prj2/doc

Sekarang saya ingin menambahkan semua direktori proyek ( 2014_prjX) ke org-agenda-files, serta semua docsubdirektori dari direktori proyek. The datafolder harus tidak menjadi bagian dari org-agenda-files, karena mereka mungkin dapat berisi 10000s file.

Bagaimana saya bisa mencapai ini? Saya mencoba yang sederhana

(setq org-agenda-files (quote ("~/doc/notes"
                               "~/.emacs.d"
                               "~/prj/*/doc"
                               )
                        )

tapi ini memberi saya kesalahan

Non-existing agenda file ~/prj/*/doc
andreas-h
sumber

Jawaban:

19

Anda dapat menggunakan fungsi ini file-expand-wildcardsuntuk mendapatkan semua file yang cocok dengan wildcard menambahkannya ke org-agenda-filesvariabel. Sesuatu seperti yang berikut ini

(setq org-agenda-files (append '("~/doc/notes" "~/.emacs.d") (file-expand-wildcards "~/prj/*/doc")))
Iqbal Ansari
sumber
Apakah ada kait yang akan memungkinkan kumpulan file untuk dihitung secara dinamis? Misalnya jika saya menambahkan .orgfile baru setelah saya mulai emacs, saya tetap ingin menjadi bagian darinya org-agenda-files.
John Wiseman
1

Saya membuat pendekatan yang lebih umum, yang memungkinkan Anda memiliki sarang yang lebih dalam. Sebagai contoh, saya memiliki pohon kaya catatan dan beberapa folder memiliki file task.org di dalamnya. Kode ini akan mengumpulkan semua lalat:

(defun set-org-agenda-files ()
  (require 'f)
  (require 's)

  (setq org-agenda-files
    (f-entries org-directory
               (lambda (filename)
                 (s-ends-with-p "/tasks.org" filename))
               t)))
Alexander Artemenko
sumber