如何在Emacs Org Mode中创建覆盖每月首日至首个周日的日记SEXP
实现Org Mode日记条目在每月1号到第一个周日显示
要实现这个需求,你需要自定义一个Elisp函数来判断日期是否处于目标区间,然后在日记里调用这个函数。具体步骤如下:
1. 定义日期判断函数
把下面的Elisp函数添加到你的Emacs配置文件(比如~/.emacs或~/.emacs.d/init.el)中:
(defun my-diary-first-day-to-first-sunday (year month day) "判断当前日期是否在当月1号到当月第一个周日之间(包含两端)。" (let* ((first-day-weekday (calendar-day-of-week (list month 1 year))) ;; calendar-day-of-week返回值:0=周日,1=周一,…,6=周六 (first-sunday-day (if (= first-day-weekday 0) 1 (+ 1 (- 7 first-day-weekday))))) (<= 1 day first-sunday-day)))
函数逻辑说明:
- 先获取当月1号对应的星期数
- 如果1号本身就是周日,第一个周日就是1号;否则计算出当月第一个周日的日期(比如1号是周一,第一个周日就是7号)
- 判断当前日期的日数是否落在1到第一个周日的日数范围内
2. 在Org日记中调用函数
在你的Org Mode日记文件里,添加这样的条目:
%%(my-diary-first-day-to-first-sunday) 这里写你要显示的内容,比如「月初第一周任务梳理」
添加完函数后,记得重启Emacs或者用M-x eval-buffer加载配置文件,让函数生效。
内容的提问来源于stack exchange,提问作者Clara Pastore
相关产品推荐
相关产品推荐

