Emacs 系列(四):使用 Org 模式自動管理郵件及同步文檔
這是 Emacs 和 Org 模式系列的第四篇。
至今為止,你已經見識到了 Org 模式的強大和高效,如果你像我一樣,你可能會想:
「我真的很想讓它在我所有的設備上同步。」
或者是說:
「我能在 Org 模式中轉發郵件嗎?」
答案當然是肯定的,因為這就是 Emacs。
同步
由於 Org 模式只使用文本文件,所以使用任意工具都可以很容易地實現同步。我使用的是 git 的 git-remote-gcrypt
。由於 git-remote-gcrypt
的一些限制,每台機器都傾向於推到自己的分支,並使用命令來控制。每台機器都會先合併其它所有的分支,然後再將合併後的結果推送到主幹上。cron 作業可以實現將機器上的分支推送上去,而 elisp 會協調這一切 —— 確保在同步之前保存緩衝區,在同步之後從磁碟刷新緩衝區,等等。
這篇文章的代碼有點多,所以我將把它鏈接到 github 上,而不是寫在這裡。
我有一個用來存放我所有的 Org 模式的文件的目錄 $HOME/org
,在 ~/org
目錄下有個 Makefile 文件來處理同步。該文件定義了以下目標:
push
: 添加、提交和推送到以主機命名的分支上fetch
: 一個簡單的git fetch
操作sync
: 添加、提交和拉取遠程的修改,合併,並(假設合併成功)將其推送到以主機命名的分支和主幹上
現在,在我的用戶 crontab 中有這個:
*/15 * * * * make -C $HOME/org push fetch 2>&1 | logger --tag 'orgsync'
與之相關的 elisp 代碼 定義了一個快捷鍵(C-c s
)來調用同步。多虧了 cronjob,只要文件被保存 —— 即使我沒有在另一個機器上同步 —— 它們也會被拉取進來。
我發現這個設置非常好用。
用 Org 模式發郵件
在繼續下去之前,首先要問自己一下:你真的需要它嗎? 我用的是帶有 mu4e 的 Org 模式,而且它集成的也很好;任何 Org 模式的任務都可以通過 Message-id
鏈接到電子郵件,這很理想 —— 它可以讓一個人做一些事情,比如提醒他在一周內回復一條消息。
然而,Org 模式不僅僅只有提醒。它還是一個知識庫、創作系統等,但是並不是我所有的郵件客戶端都使用 mu4e。(注意:移動設備中有像 MobileOrg 這樣的應用)。我並沒有像我想的那樣經常使用它,但是它有它的用途,所以我認為我也應該在這裡記錄它。
現在我不僅想處理純文本電子郵件。我希望能夠處理附件、HTML 郵件等。這聽起來很快就有問題了 —— 但是通過使用 ripmime 和 pandoc 這樣的工具,情況還不錯。
第一步就是要用某些方法將獲取到的郵件放入指定的文件夾下。擴展名、特殊用戶等。然後我用一個 fetchmail 配置 來將它拉取下來並運行我自己的 insorgmail 腳本。
這個腳本就是處理所有有趣的部分了。它開始用 ripmime 處理消息,用 pandoc 將 HTML 的部分轉換為 Org 模式的格式。 Org 模式的層次結構是用來儘可能最好地表示 email 的結構。使用 HTML 和其他工具時,email 可能會變得相當複雜,但我發現這對於我來說是可以接受的。
下一篇
我最後一篇關於 Org 模式的文章將討論如何使用它來編寫文檔和準備幻燈片 —— 我發現自己對 Org 模式的使用非常滿意,但這需要一些調整。
作者:John Goerzen 譯者:oneforalone 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive