web-dev-qa-db-ja.com

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

私は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"))

しかし、どちらも自動的にagenda-listに指定されたフォルダーの下にファイルを追加できなかったため、org-fileを開いてCc [と入力しない限り、それらのorg-file間でキーワードまたはタグを検索できません。 =アジェンダリストに追加します。

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

41
Zoe Rowa

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

(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-filesfind-LISPdirectory-files-recursivelyもこの機能を提供します。ただし、これらの場合、ファイル名の引数は(貪欲な)正規表現です。したがって、(directory-files-recursively "~/my-dir" "org")のようなものは、バックアップファイル(*.org~)を含むすべてのOrgファイルを提供します。 *.orgファイルのみを含めるには、(directory-files-recursively "~/my-dir" "org$")を使用できます。

68
Quarky

Orgファイルを再帰的に検索する簡単な方法があります。

(load-library "find-LISP")
(setq org-agenda-files
   (find-LISP-find-files "FOLDERNAME" "\.org$"))

私は私の組織設定にこれらの行を追加し、それは単に機能します。

(私はELispやemacsの専門家ではなく、VimからSpacemacsに変換したばかりの通常のユーザーです)

編集:@ xiaobing コメントセクションに より良い解決策 があり、これも行う必要はありませんload-library

(setq org-agenda-files (directory-files-recursively "~/org/" "\.org$"))
15
Mingwei Zhang