58

私は org-mode を使用してメモを書き、org-agenda を使用してすべてのメモを整理しています。特に情報を検索しています。キーワードまたはタグで。

Cc amは入力されたタグ、Cc asキーワードでいくつかのファイルを検索できます。これらの org-agenda の機能は十分に活用できますが、手動で org-file をアジェンダ リストに追加する必要があります。

次のようないくつかのコードを.emacsに追加しました

(setq org-agenda-files (list "path/folder/*.org"))

また

(setq org-agenda-files (file-expand-wildcards "path/folder/*.org"))

しかし、どちらもアジェンダリストに指定されたフォルダの下にファイルを自動的に追加することに失敗したため、組織ファイルを開いてCc [を入力してアジェンダに追加しない限り、それらの組織ファイルの中からキーワードやタグを検索することはできません。リスト。

議題に自動的に追加されたフォルダーの下にあるすべての組織ファイルを作成するにはどうすればよいですか?

4

2 に答える 2

86

ディレクトリに名前を付けるだけで十分です。たとえば、これは私にとって非常にうまく機能します:

(setq org-agenda-files '("~/org"))

も見てくださいorg-agenda-text-search-extra-files。テキスト検索のみに含まれるファイルを追加できます。典型的な値は、

(setq org-agenda-text-search-extra-files
      '(agenda-archives
        "~/org/subdir/textfile1.txt"
        "~/org/subdir/textfile1.txt"))

警告: Emacs の起動後にディレクトリにファイルを追加しても、そのファイルは含まれません。

編集:(2018)特定の拡張子を持つすべてのファイルを追加ファイルリストに含めるには、以前に書いた次の機能を試すことができます(より最近のバージョンはここで入手できる可能性があります)。

;; recursively find .org files in provided directory
;; modified from an Emacs Lisp Intro example
(defun sa-find-org-file-recursively (&optional directory filext)
  "Return .org and .org_archive files recursively from DIRECTORY.
If FILEXT is provided, return files with extension FILEXT instead."
  (interactive "DDirectory: ")
  (let* (org-file-list
         (case-fold-search t)         ; filesystems are case sensitive
         (file-name-regex "^[^.#].*") ; exclude dot, autosave, and backupfiles
         (filext (or filext "org$\\\|org_archive"))
         (fileregex (format "%s\\.\\(%s$\\)" file-name-regex filext))
         (cur-dir-list (directory-files directory t file-name-regex)))
    ;; loop over directory listing
    (dolist (file-or-dir cur-dir-list org-file-list) ; returns org-file-list
      (cond
       ((file-regular-p file-or-dir)             ; regular files
        (if (string-match fileregex file-or-dir) ; org files
            (add-to-list 'org-file-list file-or-dir)))
       ((file-directory-p file-or-dir)
        (dolist (org-file (sa-find-org-file-recursively file-or-dir filext)
                          org-file-list) ; add files found to result
          (add-to-list 'org-file-list org-file)))))))

次のように使用できます。

(setq org-agenda-text-search-extra-files
      (append (sa-find-org-file-recursively "~/org/dir1/" "txt")
              (sa-find-org-file-recursively "~/org/dir2/" "tex")))

編集: (2019) @mingwei-zhang の回答と @xiaobing のコメントで言及されているように、このfind-lisp-find-files機能も提供しています。ただし、これらの場合、ファイル名の引数は (貪欲な) 正規表現であることに注意してください。したがって、次のようなものは、バックアップ ファイル ( ) を含むすべての Org ファイルを提供します。ファイルのみを含めるには、 .find-lispdirectory-files-recursively(directory-files-recursively "~/my-dir" "org")*.org~*.org(directory-files-recursively "~/my-dir" "org$")

于 2012-07-08T16:54:18.047 に答える