在Org-Mode(C-c a a
)中生成今天的议程会在中打开文件org-agenda-files
。我不希望Emacs打开这些额外的缓冲区。
有没有一种简单的方法来告诉Emacs不要打开这些缓冲区?(或有什么相同的功能,如果在调用议程之前未打开它们,则自动将其关闭?)。
更新:
这是@lawlist提供的解决方案的更紧凑版本:
(require 'dash)
(defun my-org-keep-quiet (orig-fun &rest args)
(let ((buffers-pre (-filter #'get-file-buffer (org-agenda-files))))
(apply orig-fun args)
(let* ((buffers-post (-filter #'get-file-buffer (org-agenda-files)))
(buffers-new (-difference buffers-post buffers-pre)))
(mapcar (lambda (file) (kill-buffer (get-file-buffer file))) buffers-new))))
(advice-add 'org-agenda-list :around #'my-org-keep-quiet)
(advice-add 'org-search-view :around #'my-org-keep-quiet)
(advice-add 'org-tags-view :around #'my-org-keep-quiet)
遗憾的是,这仍然不是完美的,因为现在单击议程中的事件无法打开相应的组织文件。