emacs > org mode > agenda - 始终使用当前缓冲区

emacs > org mode > agenda - always use current buffer

我为各种项目使用了许多不同的组织模式文件,我通过将日期添加到文件名来修改它们,例如 filename-2020-09-17.org。我意识到我可以使用版本控制,但在这种情况下这是不可能的,因为需要与不使用 VC.

的其他人共享文件

我希望议程始终只显示当前 file/buffer 的项目。

例如,当我将 filename-2020-09-16.org 的文件保存到 filename-2020-09-17.org 时,议程仍然显示旧文件名,除非我将其从议程文件列表并添加新文件。

我意识到我可以使用 C-c a < a 但我很懒,不想每次都输入 S- 来获取 <.

我看了

OP 说解决方案很简单,但 he/she/they 没有提供解决方案 - 至少我没有看到它,我尝试了发布的代码,但没有用。

我也找到了https://www.reddit.com/r/orgmode/comments/bxwovd/agenda_for_current_buffer/,但是好像不能满足我的需求。

具体来说,我想在 .emacs 中添加一些内容,以便它始终适用于所有文件。

我也研究了击键宏程序,但这似乎不太理想。

感谢任何帮助。

提前致谢。

这是一个简单的函数来做你想做的事,但没有错误检查来确保例如您正在从访问 Org 模式文件的缓冲区中调用它。这个想法是将 org-agenda-files 列表设置为仅包含缓冲区正在访问的文件,然后调用常规 org-agenda 函数。将修改后的函数绑定到 C-c a 键可能是也可能不是你想要做的,但你可以自己尝试和决定:

(defun org-agenda-current-buffer ()
   (interactive)
   (let ((org-agenda-files (list (buffer-file-name (current-buffer)))))
      (org-agenda)))

(define-key global-map (kbd "C-c a") #'org-agenda-current-buffer)