Org- एजेंडा-फाइलों में वाइल्डकार्ड


10

मैं एक परियोजना आधार फ़ोल्डर है, ~/prj, अंदर जिनमें से मैं कई अलग-अलग परियोजनाओं है, 2014_prj1, 2014_prj2, ..., जिनमें से अंदर मेरे पास है, दूसरों के बीच, एक docफ़ोल्डर। लेआउट इस तरह दिखता है:

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

अब मैं सभी परियोजना निर्देशिकाओं ( 2014_prjX) org-agenda-files, साथ ही docपरियोजना निर्देशिकाओं के सभी उपनिर्देशिकाओं को जोड़ना चाहूंगा । dataफ़ोल्डरों चाहिए नहीं का हिस्सा हो org-agenda-files, क्योंकि वे संभवतः फ़ाइलों के 10000s हो सकते हैं।

इसे कैसे प्राप्त किया जा सकता है? मैंने एक सरल कोशिश की

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

लेकिन यह मुझे त्रुटि देता है

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

जवाबों:


19

आप file-expand-wildcardsवाइल्डकार्ड से मेल खाने वाली सभी फाइलों को org-agenda-filesचर में जोड़ने के लिए फ़ंक्शन का उपयोग कर सकते हैं । निम्नलिखित में से कुछ

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

क्या कोई हुक है जो फाइलों के सेट को गतिशील रूप से गणना करने की अनुमति देगा? उदाहरण के लिए, यदि मैं .orgemacs शुरू करने के बाद एक नई फ़ाइल जोड़ता हूं, तो मैं अभी भी इसका हिस्सा बनना चाहूंगा org-agenda-files
जॉन विस्मैन

1

मैंने एक अधिक सामान्य दृष्टिकोण बनाया, जो आपको गहरी घोंसले के शिकार की अनुमति देता है। उदाहरण के लिए, मेरे पास नोट्स का एक समृद्ध पेड़ है और कुछ फ़ोल्डरों के पास कार्य हैं। इसमें फ़ाइल है। यह कोड सभी मक्खी को इकट्ठा करेगा:

(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)))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.