gpt4 book ai didi

emacs - 如何让某个文件夹下的所有组织文件自动添加到议程列表中?

转载 作者:行者123 更新时间:2023-12-02 07:49:31 25 4
gpt4 key购买 nike

我正在使用 org-mode 来写笔记,并使用 org-agenda 来组织所有笔记,尤其是搜索一些信息。通过关键字或标签。

C-c a m 可以通过输入的标签搜索一些文件,C-c a s 通过关键字搜索,org-agenda 的功能很好用,但是我需要添加 org -手动归档到议程列表中。

我在.emacs中添加了一些代码,例如

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

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

但是,两者都无法自动将指定文件夹下的文件添加到议程列表中,因此我无法在这些组织文件中搜索关键字或标签,除非我打开一个组织文件并输入 C-c [ 将其添加到议程列表中。

如何让文件夹下的所有组织文件自动添加到议程中?

最佳答案

只需命名目录就足够了。例如,这对我来说非常有效:

(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) 要在额外文件列表中包含具有特定扩展名的所有文件,您可以尝试我之前写过的以下函数 ( a more recent version might be available here )。

;; 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 find-lispdirectory-files-recursively 也提供了此功能。但是,请注意,在这些情况下,文件名参数是(贪婪的)正则表达式。因此,类似 (directory-files-recursively "~/my-dir""org") 将为您提供所有 Org 文件,包括备份文件 (*.org~)。要仅包含 *.org 文件,您可以使用 (directory-files-recursively "~/my-dir""org$")

关于emacs - 如何让某个文件夹下的所有组织文件自动添加到议程列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11384516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com