Ký tự đại diện trong tập tin org-agenda


10

Tôi có một thư mục cơ sở dự án, ~/prj, bên trong mà tôi có nhiều dự án cá nhân, 2014_prj1, 2014_prj2, ..., bên trong mà tôi có, trong số những người khác, một docthư mục. Bố cục trông như thế này:

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

Bây giờ tôi muốn thêm tất cả các thư mục dự án ( 2014_prjX) vào org-agenda-files, cũng như tất cả các docthư mục con của các thư mục dự án. Các datathư mục không nên là một phần của org-agenda-files, vì chúng có thể chứa 10000 tệp.

Làm thế nào tôi có thể đạt được điều này? Tôi đã thử một cách đơn giản

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

nhưng điều này cho tôi lỗi

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

Câu trả lời:


19

Bạn có thể sử dụng hàm file-expand-wildcardsđể lấy tất cả các tệp khớp với ký tự đại diện thêm chúng vào org-agenda-filesbiến. Một cái gì đó như sau

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

Có một cái móc nào cho phép tập hợp các tập tin được tính toán linh hoạt không? Ví dụ: nếu tôi thêm một .orgtệp mới sau khi tôi bắt đầu emacs, tôi vẫn muốn nó là một phần của nó org-agenda-files.
John Wiseman

1

Tôi đã tạo ra một cách tiếp cận chung hơn, cho phép bạn có lồng nhau sâu hơn. Ví dụ: tôi có một cây ghi chú phong phú và một số thư mục có tệp task.org trong đó. Mã này sẽ thu thập tất cả các con ruồi:

(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)))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.