实现 org agenda 自动保存功能

我在家使用 mac mini ,在外使用 macbook pro 办公,通过 Synology Drive (曾经是Dropbox) 同步多台机器上的个人/工作的代办事项。

由于在 org agenda buffer 的事项状态调整、refile 都只修改 buffer 而不会保存文件,我经常会忘记保存涉及的 org agenda 文件,导致两机上文件不同步。

我利用 org agenda 的 hook 实现了自动保存 org agenda 文件的机制,在此分享一下:

  (add-hook! 'org-agenda-finalize-hook
    (defun +org-save-all-agenda-files-h ()
      (let ((expand-org-agenda-files (org-agenda-files t)))
        (save-current-buffer
          (dolist (buffer (buffer-list t))
            (set-buffer buffer)
            (when (and (buffer-modified-p buffer)
                     (member (buffer-file-name)
                             expand-org-agenda-files))
              (save-buffer)))))))

欢迎交流学习。

2 个赞

可以尝试习惯 org-agenda-exit 来退出 agenda

我用懒猫的auto-save.el

补充几个类似的

(advice-add 'org-refile :after 'org-save-all-org-buffers)
(advice-add 'org-archive :after 'org-save-all-org-buffers)
(add-hook 'org-capture-after-finalize-hook 'org-save-all-org-buffers)
(advice-add 'org-capture-refile :after 'org-save-all-org-buffers)
2 个赞

有空研究一下 :+1:

其实我用得最多的是这个,切出emacs后自动保存

(add-hook 'focus-out-hook (lambda () (save-some-buffers t))) 
; save all opened buffers