如何让 org agenda daily/weekly view 显示某 category 第一个未完成的 item?

关于 emacs org mode agenda 我有个问题请教. 我想把要做的事划定一些 category, 比如 thesis, trivial, English. 我想只为这些 category 设定 schedule, 比如每天 9 到 10 点半是 thesis, 11 点到 12 点是 trivial. 我希望 agenda daily/weekly view 中显示的是这个 category 下第一个 TODO item 而不是 timestamp 所在的 heading 本身. 这样我就不用再重复设置 timestamp, 只需要关注这个类别下有哪些需要做的事就可以了. 比如:

,*** thesis
<2023-10-16 Mon 09:00-11:00 +1d>
,**** DONE 阅读 over 100x
,**** 阅读 ISAAC
,**** TODO 阅读 BP-NTT
,**** 阅读 RM-NTT ADC 与结果部分

那么我希望 09:00-11:00 这个时间段它显示的是 阅读 BP-NTT 而不是 thesis. 请问我可以如何做到这一点?

不是很理解你要的效果,每個 category 是不同的 agenda 嗎?

是的話:

  • category 可以靠搜尋過濾,像是 tag 。
  • 如果一次可以顯示多個 item ,排序默認應該是按照 heading 的順序。
  • 接著就不顯示 Done 就行了。

先試著做一個 custom agenda 滿足基本的需求看看,這樣比較好理解你還缺哪些功能。

看了一下 org-agenda-list 的实现, 感觉不太可能直接实现, 理由是它构建 agenda 的依据是 timestamp 的 entries, 但 timestamp 不会对 subtree 起作用, 因此如果一个 item 没有显式有 timestamp, 就不会被构建. 基于此, 我被迫用 org-agenda-entry-text-mode 和 org-agenda-entry-text-maxlines, 虽然不好看, 但勉强能达到效果.

我认为你需要的是 tag,在小节标题上设置 @thesis 的tag,这个小节下的todo都会继承显示这个tag

但樓主希望只設置一個 timestamp ,這好像就不太能實現。

我感覺只能靠自定一些 function ,去自動設置 heading 下的 timestamp