Kuruluş gündemi dosyalarında joker karakter


10

Bir proje baz klasörü var ~/prj, birçok bireysel projeler var olan iç, 2014_prj1, 2014_prj2, ..., ben içeride olan, diğerleri arasında, bir docklasör. Düzen şöyle görünür:

~/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

Şimdi tüm proje dizinlerini ( 2014_prjX) ve proje dizinlerinin org-agenda-filestüm docalt dizinlerini eklemek istiyorum . dataKlasörler gerektiği değil parçası olmak org-agenda-filesmuhtemelen dosyaların 10000s içerebileceği için,.

Bunu nasıl başarabilirim? Basit denedim

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

ama bu bana hata veriyor

Non-existing agenda file ~/prj/*/doc

Yanıtlar:


19

file-expand-wildcardsJoker karakterle eşleşen tüm dosyaların org-agenda-filesdeğişkene eklenmesini sağlamak için işlevi kullanabilirsiniz . Aşağıdaki gibi bir şey

(setq org-agenda-files (append '("~/doc/notes" "~/.emacs.d") (file-expand-wildcards "~/prj/*/doc")))

Dosya kümesinin dinamik olarak hesaplanmasını sağlayacak bir kanca var mı? Örneğin .org, emacs'ı başlattıktan sonra yeni bir dosya eklersem, yine de bir parçası olmasını isterim org-agenda-files.
John Wiseman

1

Daha derin bir yuva yapmanıza izin veren daha genel bir yaklaşım yarattım. Örneğin, zengin bir not ağacım var ve bazı klasörlerde task.org dosyası var. Bu kod tüm sinekleri toplar:

(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)))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.