조직 아젠다 파일의 와일드 카드


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.
John Wiseman

1

더 일반적인 방법을 사용하여 더 깊은 중첩을 가질 수 있습니다. 예를 들어, 풍부한 메모 트리가 있고 일부 폴더에는 tasks.org 파일이 있습니다. 이 코드는 모든 비행을 수집합니다.

(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)))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.